【问题标题】:Sizing in Android layouts?在 Android 布局中调整大小?
【发布时间】:2012-02-20 23:38:37
【问题描述】:

这让我困惑到世界末日。我有一个 480x800 像素的 4.5 英寸屏幕,我不知道屏幕的 DPI 是多少,或者任何屏幕。假设我想这样做:

每个红色框都是从屏幕一侧到另一侧的图片,蓝色框是其他东西(ImageButton 或其他东西)。我怎样才能知道屏幕的 DPI 是多少以及将每张图片设置为多少像素?!这应该很简单,但令人困惑。

【问题讨论】:

    标签: android xml eclipse layout android-layout


    【解决方案1】:

    强烈建议您不要对事物的高度和宽度进行硬编码。您的应用程序可能在不同的可能密度上运行,这正是您希望避免手动设置事物大小的确切原因。

    相反,您可以使用 wrap_content 和 fill_parent 之类的东西。您可以使用带有 ImageButton 的 LinearLayout 以及其中的所有 ImageView 创建您想要的内容。然后,您可以将 ImaveViews 设置为具有高度 =“wrap_content”和宽度 =“fill_parent”。这样,现在无论您在哪个屏幕上,它们都将始终以全宽和与您正在显示的图片相同的高度显示。

    Read about Layouts here 特别注意线性布局部分。

    find an example here 开始。

    还要考虑一个事实,并非您的应用可能在其上运行的每台设备都与您的设备一样大。除非您希望自己的身高变得太小而无法使用,否则他们中的许多人将没有空间在显示屏上显示 6 行。如果您必须显示这么多行,您还必须将 LinearLayout 包装在 ScrollView 中。

    【讨论】:

      【解决方案2】:

      有两种选择:

      1.在xml中定义布局

      <LinearLayout 
          xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
      
          android:weightSum="7"
      
          android:orientation="vertical"
          android:gravity="center_horizontal" 
      >
          <Button 
              android:layout_width="wrap_content"
              android:layout_height="0dp"
      
              android:layout_weight="2"
      
              android:text="button"    
          />
      
          <View 
              android:layout_width="match_parent"
              android:layout_height="0dp"
      
              android:layout_weight="1"
      
              android:background="#FFF"
          />
          <View 
              android:layout_width="match_parent"
              android:layout_height="0dp"
      
              android:layout_weight="1"
      
              android:background="#0FF"
          />
          <View 
              android:layout_width="match_parent"
              android:layout_height="0dp"
      
              android:layout_weight="1"
      
              android:background="#F0F"
          />
          <View 
              android:layout_width="match_parent"
              android:layout_height="0dp"
      
              android:layout_weight="1"
      
              android:background="#FF0"
          />
          <View 
              android:layout_width="match_parent"
              android:layout_height="0dp"
      
              android:layout_weight="1"
      
              android:background="#000"
          />
      </LinearLayout>
      

      ** 2.在代码中定义布局**

      这里不赘述,你可以像这样从DisplayMetrics类中获取所有数字:

      DisplayMetrics metrics = new DisplayMetrics();
          getWindowManager().getDefaultDisplay().getMetrics(metrics);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-04-30
        • 2012-09-05
        • 2011-11-20
        • 1970-01-01
        • 2011-10-09
        • 1970-01-01
        • 1970-01-01
        • 2014-07-14
        相关资源
        最近更新 更多