【问题标题】:Why Views are not aligned right to left?为什么视图没有从右到左对齐?
【发布时间】:2014-05-25 21:51:45
【问题描述】:

我在垂直布局中有这个水平布局。 在我的水平布局中,我必须查看我想要显示的视图(微调器) 从右到左。

上面的图片是我现在得到的。底部是我所期望的。很简单。

我一直在尝试更改所有属性。似乎没有任何效果。改变重力,layout_gravity...

因为我愿意使用重量,所以我不能使用 RelativeLayouts。

我应该如何解决这个问题? 有没有什么解决方案不会弄乱我的 XML 的排列和顺序,并将第一个控件放在第二个控件之后(我讨厌那个)?

有什么明显的我不知道或遗漏的吗? 提前非常感谢。

<LinearLayout 
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<TextView
android:id="@+id/tb3TxtPrice"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:layout_margin="20dp"
android:text="price"
android:textAppearance="?android:attr/textAppearanceMedium"/>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="right" 
android:layout_marginRight="20dp"
android:layout_marginLeft="20dp"
android:orientation="horizontal">

    <Spinner
    android:id="@+id/tb3SprPriceStartLimit"
    android:layout_weight="1"
    android:layout_width="0dp"
    android:layout_height="40dp"
    android:layout_gravity="right"
    android:entries="@array/priceStartLimitArray" />


    <Spinner
    android:id="@+id/tb3SprPriceEndLimit"
    android:layout_weight="1"
    android:layout_width="0dp"
    android:layout_height="40dp"
    android:layout_gravity="right"
    android:entries="@array/priceEndLimitArray" />
</LinearLayout>

【问题讨论】:

  • 你能张贴你所期待的截图吗?
  • 对不起。我刚刚添加了图片。

标签: android android-layout alignment orientation layout-gravity


【解决方案1】:

只需交换两个Spinner的出现顺序即可。

<LinearLayout
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:layout_gravity="right" 
  android:layout_marginRight="20dp"
  android:layout_marginLeft="20dp"
  android:orientation="horizontal">
  <-- the 1 -->
  <Spinner
  android:id="@+id/tb3SprPriceStartLimit"
  android:layout_weight="1"
  android:layout_width="0dp"
  android:layout_height="40dp"
  android:entries="@array/priceStartLimitArray" />

  <-- the 2 -->
  <Spinner
  android:id="@+id/tb3SprPriceEndLimit"
  android:layout_weight="1"
  android:layout_width="0dp"
  android:layout_height="40dp"
  android:entries="@array/priceEndLimitArray" />
</LinearLayout>

另外,LinearLayout中方向为水平时,设置layout_gravity=leftlayout_gravity=right是没有用的。

【讨论】:

    【解决方案2】:

    试试这个:

    先保留你想在右边的.. 然后左边.. gravity 仅用于对齐文本

    <Spinner
        android:id="@+id/tb3SprPriceEndLimit"
        android:layout_weight="1"
        android:layout_width="0dp"
        android:layout_height="40dp"
        android:layout_gravity="right"
        android:entries="@array/priceEndLimitArray" />
    
    <Spinner
        android:id="@+id/tb3SprPriceStartLimit"
        android:layout_weight="1"
        android:layout_width="0dp"
        android:layout_height="40dp"
        android:layout_gravity="right"
        android:entries="@array/priceStartLimitArray" />
    

    【讨论】:

    • 我想你的答案是最有可能的方法。我尝试过这个。但是 2 个微调器现在消失了,并且在屏幕上的任何地方都看不到。
    • 表示那些不可见?
    • 先编写需要在“右侧”的微调器的代码,然后添加上面的代码。
    • 我认为我的回答不适用于你..android:layout_toLeftOf 适用于相对布局而非线性布局
    • 我也这么认为。而消失原来是因为width=0。我别无选择,只能使用,因为我使用宽度让微调器占据相同的空间。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-20
    • 2017-10-13
    • 2021-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-05
    相关资源
    最近更新 更多