【问题标题】:Adapt view for screens with lower resolution为分辨率较低的屏幕调整视图
【发布时间】:2014-02-07 18:01:18
【问题描述】:

我测试了我在过去两个月开发的应用程序,始终使用 5 英寸的智能手机。现在,我在显示我的视图的所有内容时遇到了很大的问题。

首先,这是我的 xml:

<FrameLayout  xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" 


    android:background="@drawable/bg">



<TableLayout

    android:layout_width="match_parent"
    android:layout_height="match_parent">


    <TableRow
        android:id="@+id/tableRow1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/willi"
        />

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="70dp"


        android:background="@drawable/willi"
         />

    <Button
        android:id="@+id/button3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
    android:layout_marginLeft="140dp"
        android:background="@drawable/willi"
/>

    <Button
        android:id="@+id/button4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
    android:layout_marginLeft="210dp"

        android:background="@drawable/willi"
         />


    </TableRow>


    <TableRow
        android:id="@+id/tableRow2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" 
        android:layout_marginTop="90dp">



         <Button
        android:id="@+id/button5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"

        android:background="@drawable/willi"
        />

    <Button
        android:id="@+id/button6"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="70dp"
        android:background="@drawable/willi"
   />

    <Button
        android:id="@+id/button7"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="140dp"
        android:background="@drawable/willi"
         />

    <Button
        android:id="@+id/button8"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="210dp"
        android:background="@drawable/willi"
         />

        </TableRow>
       <TableRow
        android:id="@+id/tableRow3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="90dp" >


       <Button
        android:id="@+id/button9"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"

        android:background="@drawable/willi" />
    <Button

        android:id="@+id/button10"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="70dp"
        android:background="@drawable/willi"  />

    <Button
        android:id="@+id/button11"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="140dp"
        android:background="@drawable/willi"  />

    <Button
        android:id="@+id/button12"
        android:layout_marginLeft="210dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"

        android:background="@drawable/willi" />

    </TableRow>



              <TableRow
        android:id="@+id/tableRow4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="90dp" >


       <Button
        android:id="@+id/button13"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"

        android:background="@drawable/willi" />
    <Button

        android:id="@+id/button14"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="70dp"
        android:background="@drawable/willi"  />

    <Button
        android:id="@+id/button15"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="140dp"
        android:background="@drawable/willi"  />

    <Button
        android:id="@+id/button16"
        android:layout_marginLeft="210dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"

        android:background="@drawable/willi" />

    </TableRow>

      <TableRow
        android:id="@+id/tableRow5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="90dp" >


       <Button
        android:id="@+id/button17"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"

        android:background="@drawable/willi" />
    <Button

        android:id="@+id/button18"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="70dp"
        android:background="@drawable/willi"  />

    <Button
        android:id="@+id/button19"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="140dp"
        android:background="@drawable/willi"  />

    <Button
        android:id="@+id/button20"
        android:layout_marginLeft="210dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"

        android:background="@drawable/willi" />

    </TableRow>

    <TableRow
        android:id="@+id/tableRow6"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="90dp" >


       <Button
        android:id="@+id/button21"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"

        android:background="@drawable/willi" />
    <Button

        android:id="@+id/button22"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="70dp"
        android:background="@drawable/willi"  />

    <Button
        android:id="@+id/button23"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="140dp"
        android:background="@drawable/willi"  />

    <Button
        android:id="@+id/button24"
        android:layout_marginLeft="210dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"

        android:background="@drawable/willi" />


    </TableRow>

    </TableLayout>

<TextView
        android:id="@+id/tvPunktewaehrend"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:textStyle="bold"
        android:layout_gravity="center_horizontal"
        android:textColor="@color/white"
        android:textSize="20sp"
        android:text=" " />


</FrameLayout>

如您所见,我有 6 个表格行,每行有 4 个按钮。在 HTC Wildfire 上,我看到第五排非常小,第六排在我的视野之外。 我该如何解决小屏幕的这个问题?

【问题讨论】:

  • 你需要让所有按钮都适合屏幕而不滚动吗?
  • 是的,所有按钮都必须在一个屏幕上,用户不应该滚动!

标签: android layout view resolution


【解决方案1】:

TableLayout 更改为垂直LinearLayout,给它一个weightSum。然后将水平LinearLayouts 添加到它,并将Buttons 作为孩子。对于父 LinearLayout 使用 weightSum,对于子 LinearLayout 使用 weight。

所以对于 6 行,你有 weightSum 6 并且每个 LinearLayout height 0dp 和 weight 1。

【讨论】:

    【解决方案2】:

    您可以做的是使用 ScrollView 作为您的主要 Layout,并且不需要修改按钮和所有内容的大小,就像您可以移动滚动条,我用它我认为应用程序适用于不同的屏幕尺寸。我希望你能提供一些东西。

    【讨论】:

      【解决方案3】:

      我看到第五排很小,第六排在我的视野之外。 如何解决小屏幕的这个问题?

      因此,您可以使用 dimens.xml 文件,通过查看不同分辨率的布局,您可以根据需要在其中放置填充/边距等属性。

      dimens.xml 的内容可以是:

      <resources>
      
          <!-- Default screen margins, per the Android Design guidelines. -->
          <dimen name="activity_horizontal_margin">16dp</dimen>
          <dimen name="activity_vertical_margin">16dp</dimen>
      
      </resources>
      

      根据您的屏幕尺寸/分辨率,您必须将此文件设置为:

      res/values/dimens.xml
      
      res/values-hdpi/dimens.xml
      
      res/values-mdpi/dimens.xml
      
      res/values-sw360dp-hdpi/dimens.xml
      
      res/values-sw360dp-long-xhdpi/dimens.xml
      
      res/values-sw600dp/dimens.xml
      
      res/values-sw720dp-land/dimens.xml
      

      要使用这个值: 例如 您的表行 1 > 按钮 2 : 放

      android:layout_marginLeft="@dimen/activity_horizontal_margin"
      

      而不是

      android:layout_marginLeft="70dp"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-19
        • 2013-02-26
        • 2017-10-09
        • 2014-09-21
        • 1970-01-01
        相关资源
        最近更新 更多