Android:适当地水平居中两个视图,适用于多种屏幕尺寸

时间:2016-01-31 02:28:54

标签: android

我知道这是一个被问了很多的问题,但到目前为止提供的答案都没有帮助我解决我的问题。最好用图片描述。遗憾的是,我没有足够的声誉将它们嵌入到这里,但这里有三个屏幕尺寸显示我的问题:http://imgur.com/a/D5uAu

我正在寻找一种让“Retrumpets”ImageButton和TextView适合所有屏幕尺寸的方法。现在,他们目前使用layout_centerHorizo​​ntal在retrumpetTextView上居中,并将retrumpetButton附加到TextView的左侧,使用layout_toLeftOf,如下所示:

      <ImageButton
        android:layout_width="35dp"
        android:layout_height="30dp"
        android:id="@+id/retrumpetButton"
        android:src="@drawable/retrumpet"
        android:scaleType="centerInside"
        android:adjustViewBounds="true"
        android:background="#00FFFFFF"
        android:layout_above="@+id/detailedTrumpetSeparationLine"
        android:layout_toLeftOf="@+id/retrumpetCountTextView"/>

      <TextView
        tools:text="30 Retrumpets"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:id="@+id/retrumpetCountTextView"
        android:textColor="#FFFFFF"
        android:paddingBottom="6dp"
        android:paddingLeft="2dp"
        android:textSize="14sp"
        android:layout_centerHorizontal="true"
        android:layout_below="@+id/trumpetTextView"/>

如果不是因为我真正想要集中的是两个视图中的两个视图的组合,这样就可以完美地工作,这样一个视图或另一个视图就不会向左或向右移动。

我的问题是:这样做的最佳方法是什么?我可以以某种方式提供一个调整值来将这两个视图向右移一点吗?当视图居中时,layout_marginStart和layout_marginLeft似乎不起作用。

非常感谢!

编辑:非常感谢!将两者组合成一个水平居中的LinearLayout完美地完成了这项工作。

3 个答案:

答案 0 :(得分:0)

您应该将所有这些组件,即“Retrumpets”ImageButton和TextView全部放在1个布局中。 LinearLayout中。然后你可以把layour gravity放到这个LinearLayout中心。

答案 1 :(得分:0)

您可以使用LinearLayout来包含它们。

   <LinearLayout  
    android:layout_centerHorizontal="true"
    android:layout_below="@+id/trumpetTextView"     
    android:orientation = "horizontal"  
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
        <ImageButton
    android:layout_width="35dp"
    android:layout_height="30dp"
    android:id="@+id/retrumpetButton"
    android:src="@drawable/retrumpet"
    android:scaleType="centerInside"
    android:adjustViewBounds="true"
    android:background="#00FFFFFF"
    android:layout_above="@+id/detailedTrumpetSeparationLine"
    android:layout_toLeftOf="@+id/retrumpetCountTextView"/>

       <TextView
    tools:text="30 Retrumpets"
    android:layout_width="100dp"
    android:layout_height="wrap_content"
    android:id="@+id/retrumpetCountTextView"
    android:textColor="#FFFFFF"
    android:paddingBottom="6dp"
    android:paddingLeft="2dp"
    android:textSize="14sp"
    />
   </LinearLayout>

或者只使用drawableLeft

<TextView
        tools:text="30 Retrumpets"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:id="@+id/retrumpetCountTextView"
        android:textColor="#FFFFFF"
        android:paddingBottom="6dp"
        android:paddingLeft="2dp"
        android:textSize="14sp"
        android:drawableLeft="@drawable/retrumpet"
        android:layout_centerHorizontal="true"
        android:layout_below="@+id/trumpetTextView"/>

答案 2 :(得分:0)

您可能需要考虑将ImageButtonTextViews置于水平线性布局中,并使用权重来正确调整它们。尝试将每个layout_weight的{​​{1}}设置为0,将ImageButton设置为1。