Android 线性布局,在8.9英寸平板电脑上无静态尺寸和图像低分辨率

Android 线性布局,在8.9英寸平板电脑上无静态尺寸和图像低分辨率,android,android-layout,android-linearlayout,Android,Android Layout,Android Linearlayout,我今天一直在为Android做一个小应用,它是谷歌高级搜索的接口。它基本上没有图像,所有小部件的大小要么是wrap\u content要么是fill\u parent。我没有使用硬编码的像素尺寸。它基本上由一个滚动视图,包括一个线性布局,其中包括文本视图和微调器的列表(以及底部的搜索按钮) 我不知道这是否是一个常见的问题,我今天找不到任何东西。除了Galaxy tab 8.9英寸的标签,我没有其他Android设备。接下来是我在清单xml文件中唯一与样式相关的内容: <activ

我今天一直在为Android做一个小应用,它是谷歌高级搜索的接口。它基本上没有图像,所有小部件的大小要么是
wrap\u content
要么是
fill\u parent
。我没有使用硬编码的像素尺寸。它基本上由一个
滚动视图
,包括一个
线性布局
,其中包括
文本视图
微调器的列表(以及底部的搜索按钮)

我不知道这是否是一个常见的问题,我今天找不到任何东西。除了Galaxy tab 8.9英寸的标签,我没有其他Android设备。接下来是我在清单xml文件中唯一与样式相关的内容:

     <activity android:name="MainActivity"
          android:theme="@android:style/Theme.NoTitleBar">

以下是Android 2.2设备的屏幕截图:

这是从2.2版开始的,但分辨率更高。我正在下载一些其他图像,看看在3.2版虚拟机中是否正常,我使用的当前图像无法显示手机的小视图

从4.1手机

从一个4.17英寸的标签

如我所见,问题仅限于我的设备:


好的,如果我没说错的话,你说的是不同android版本的EditText外观
如果是,这里是解决方案 将自定义背景用于所有EditText,如下所示

 <EditText
         android:layout_width="fill_parent"
         android:layout_height="wrap_content"
         android:background="@drawable/bg_border_statelist" />

创建选择器:可绘制/bg\U边框\U状态列表

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_selected="true"
        android:drawable="@drawable/bg_border_selected" />
    <item android:state_focused="true"
        android:drawable="@drawable/bg_border_selected" />
    <item android:drawable="@drawable/bg_border" />
</selector>

可抽出式/bg_边框

<shape android:shape="rectangle">
                    <stroke   
                        android:width="1dp"
                        android:color="#B5B5B5" />                        
                    <solid android:color="#ffffff" />
                    <corners android:radius="0dp" />
                </shape>

可绘制/背景边框已选定

<shape android:shape="rectangle">
                    <stroke   
                        android:width="1dp"
                        android:color="#FA9D2C" />                        
                    <solid android:color="#ffffff" />
                    <corners android:radius="0dp" />
                </shape>

根据您的选择使用边框颜色&您也可以使用可绘制的形状

您对此做了足够的研究吗?

您尝试了什么?在您的代码中,您没有做任何特殊的事情来实现这一点

在向他人寻求帮助之前,请自己提出上述问题并提及 你的问题中的答案,即提及你尝试了什么,然后 你可以引起别人的注意并得到快速回复

好的,让我们开门见山吧

你的问题是

如何使我的应用程序在所有设备上看起来都一样?我说得对吗

这里所有的设备都意味着

  • 不同的屏幕尺寸
  • 不同密度(屏幕分辨率)
  • 不同的平台版本(对于ex.2.2和4)使用自己的默认版本 主题和风格)
因此,请仔细阅读以上主题,然后你可以自己做

以下参考资料将帮助您理解这些想法

你可以从表格中得到样品


经历这些,尝试一些东西,然后问问你的疑问

您看到的差异与主题相关。您在设备中看到的文本字段使用全息主题,因为其他屏幕截图中的文本字段不使用全息主题

如果您想在每个设备中使用全息主题,则需要指出一个解决方案。(我没有测试,但我想这不是你想要的)

另一方面,如果你的目标是摆脱全息主题,你可以使用另一个主题,例如黑色。只需将清单中的主题定义替换为:

   <activity android:name="MainActivity"
          android:theme="@android:style/Theme.Black.NoTitleBar">
我可以使用的最简单布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello" />

    <EditText
        android:id="@+id/editText1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10" >

        <requestFocus />
    </EditText>
      
    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button" 
        android:onClick="ChangeActivity"/>

</LinearLayout>

这将去除标题栏,将应用程序设置为全屏,不会干扰主题。

将应用程序主题更改为
@android:style/theme.Black.NoTitle
。这将使不同OS版本之间的演示保持相同

还可以尝试在清单中设置您的min和target SDK:

<uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="8" />


什么?我疯了吗?或者你的问题中没有实际问题?为什么不告诉我们它在不同设备上的外观?您可以使仿真器配置与大多数设备匹配。构建一些并测试它。不指定尺寸并不意味着所有东西都适合每个屏幕大小。我正在使用一些模拟器配置进行测试。我已经完成了一个标准手机大小的2.2设备,它看起来就像我想要的。我会尝试添加图像后,我做了一些或更多。虽然我的笔记本电脑看起来不适合使用模拟器,但它需要一些时间:)我几乎可以肯定你不应该在输入中使用文本来描述字段-它们应该只显示输入的示例格式。谢谢你的回答。但我有两个问题,一个,哪个文件要包含这个,二个,这会不会改变EditText项目的外观,使它们看起来不像本地android应用程序?我已经尝试了你的建议。它使应用程序崩溃。实际上,我在应用程序中的文本分辨率方面存在问题,如我问题的最后一张图片所示。它成功构建,但在我的选项卡上运行时会提示强制关闭。在问这个问题之前,我已经浏览了这些文档。我已经仔细阅读了这一部分。我的应用程序中没有硬编码的walues。我已经将源代码放在github上,在我的问题中有一个指向回购协议的链接。在我尝试过的许多模拟器上,分辨率都不错。请看图片,这是我问题中图片的url,这是我平板电脑的屏幕截图。我已经试过了,它在任何模拟器中都运行得很好。我尝试了每一个主题,结果都是一样的。我使用了从2.2到4.1的每一个版本来尝试。结果还可以。只有我的平板电脑有坏结果。顺便说一句,在我提问之前,我已经搜索了3-4个小时的答案,没有任何结果对我的答案有帮助。谢谢你善意的回答,虽然这不是对我问题的回答。不过,我会投赞成票,因为来这里的其他人可能会觉得它很有用。对不起,g_kaya,我已经检查了你的代码,你没有做任何特别的事情来确定从平板电脑中获得了哪些资源,这就是为什么我认为你什么都没做。无论如何,现在您非常了解android资源目录,然后尝试找出所引用的资源目录
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello" />

    <EditText
        android:id="@+id/editText1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10" >

        <requestFocus />
    </EditText>
      
    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button" 
        android:onClick="ChangeActivity"/>

</LinearLayout>
requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
        WindowManager.LayoutParams.FLAG_FULLSCREEN);
<uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="8" />