Android 按钮drawableBottom Nexus 7和Galaxy Tab 2

Android 按钮drawableBottom Nexus 7和Galaxy Tab 2,android,android-drawable,Android,Android Drawable,我正在将为Galaxy Tab 2(10.1)屏幕大小编写的应用程序调整为Nexus 7(7”)。 根据stackoverflow中的建议,我为所有密度(l | m | h | xh)dpi创建了不同的图像大小,还创建了一个特定的布局-sw600dp文件夹,其中包含为7英寸屏幕修改的布局 [编辑] 我补充说 到我的Androidmanifest文件 [/编辑] 尽管进行了所有这些修改,我仍在努力使我的按钮的可绘制底部(以及顶部、左侧、右侧)在两台设备之间正确缩放 渲染图像的物理大小相同。因此

我正在将为Galaxy Tab 2(10.1)屏幕大小编写的应用程序调整为Nexus 7(7”)。 根据stackoverflow中的建议,我为所有密度
(l | m | h | xh)dpi
创建了不同的图像大小,还创建了一个特定的
布局-sw600dp
文件夹,其中包含为7英寸屏幕修改的布局

[编辑]

我补充说

到我的
Androidmanifest
文件

[/编辑]

尽管进行了所有这些修改,我仍在努力使我的
按钮的
可绘制底部
(以及顶部、左侧、右侧)在两台设备之间正确缩放

渲染图像的物理大小相同。因此,Nexus正在制作与银河系(或viceversa)一样大的图标

据我所知,这两台设备虽然物理尺寸不同,但它们共享相同的像素密度(xhdpi),这使得Nexus可以从xhdpi文件夹中拾取。 我错过了什么重要的事情吗


我应该如何调整我的drawableBottoms?

您是否确保该应用程序专为高密度显示器设计?尝试在以下权限之后将其添加到清单:

<supports-screens android:largeScreens="true"
                  android:normalScreens="true"
                  android:smallScreens="true"
                  android:anyDensity="true"/>

好的

也许这并不是所谓的“解决方案”。但它对我来说很管用,而且考虑到我必须适应的应用程序的大小,我只花了最少的努力

下面的解决方案基本上运行得很好,但(可能)仅适用于这种特定情况,因为Galaxy Tab 2和Nexus 7具有相同的分辨率

我是如何在几乎没有工作的情况下修复它的:

  • 不要创建分辨率较小的图像(你并不真正需要它),除非你打算在许多其他设备上安装(或已经安装)你的应用程序
  • 创建两个值-文件夹。一个用于Galaxy Tab 2(=xlarge),另一个用于Nexus 7(=large)。修改器是屏幕的大小
  • 在每个文件夹中放置一个
    dimen.xml
    文件,您将分别像这样填充该文件
  • 对于Galaxy选项卡2:

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
    [...]
    <dimen name="s25sp">25sp</dimen>
    <dimen name="s30sp">30sp</dimen>
    <dimen name="s35sp">35sp</dimen>
    [...]
    <dimen name="s25dp">25dp</dimen>
    <dimen name="s30dp">30dp</dimen>
    <dimen name="s35dp">35dp</dimen>
    [...]
    </resources>
    

    是-这是我添加的:
    好的,对不起,我只有这些。
    <?xml version="1.0" encoding="utf-8"?>
    <resources>
    [...]
    <dimen name="s25sp">17sp</dimen>
    <dimen name="s30sp">21sp</dimen>
    <dimen name="s35sp">24sp</dimen>
    [...]
    <dimen name="s25dp">17dp</dimen>
    <dimen name="s30dp">21dp</dimen>
    <dimen name="s35dp">24dp</dimen>
    [...]
    </resources>
    
       #!/usr/bin/perl
    
       $filename = $ARGV[0];
       open (FILE, $filename);
    
       while (<FILE>) {
          chomp;
    
          if ( $_ =~ /\"[0-9]*(di?p|sp)\"/) {
    
             my $pre = $`;
             my $mat = $&;
             my $pos = $';
    
             $mat =~ s/["]+//g;
    
             print "$pre\"\@dimen/s$mat\"$pos\n";
          }  elsif ( ($_ !~ /\"[0-9]*dp\"/) && ($_ !~ /\"[0-9]*sp\"/) ) {      
             print "$_\n";
          }
       }
    
       close (FILE);
       exit;