【背景】
Android中,想要把当前UI中一些控件,实现右对齐。
【折腾过程】
1.参考了一堆的:
【Android布局】在程序中设置android:gravity 和 android:layout_Gravity属性 – 右撇子 – 博客频道 – CSDN.NET
去
gravity或layout_gravity设置为right
结果都没用。
2.搜:
android align right
找到:
alignment – how to right align widget in horizontal linear layout android? – Stack Overflow
但是我这里是已经有其他view的:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="20dp"
android:orientation="horizontal" >
<TextView
android:id="@+id/variableStatus"
android:layout_width="30dp"
android:layout_height="wrap_content"
android:layout_gravity="left"
android:background="@drawable/status_right"/>
<TextView
android:id="@+id/variableName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="5dp"
android:textColor="@color/MMBlue1"
android:textSize="14sp" />
<TextView
android:id="@+id/variableValue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="5dp"
android:textSize="14sp" />
<TextView
android:id="@+id/variableUnit"
android:layout_gravity="right"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="14sp" />
</LinearLayout>所以按理来说无需加空的view才对。
3.其中
android:layout_gravity="right"
换为:
android:gravity="right"
也试过,当然是没用的。
4.还是参考:
alignment – how to right align widget in horizontal linear layout android? – Stack Overflow
去改为:
<TextView
android:id="@+id/variableUnit"
android:layout_gravity="right"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="14sp" />结果是问题依旧。
5.再去搜:
android:layout_gravity="right" not take effect
参考:
why android:layout_gravity="right" not working here in android xml – Stack Overflow
Aligning ImageView to right of the layout android – Stack Overflow
还是没搞定。
6.再去参考:
android – how to align an element to right in horizontal LinearLayout? – Stack Overflow
去添加空的view试试。
结果:
<View android:layout_width="0dp"
android:layout_height="match_parent"
android:weight="1" />说是没有android:weight这个属性。
7.再去参考:
How to align a two buttons layout left and right in android – Stack Overflow
后来布局换为RelativeLayout:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="20sp"
android:orientation="horizontal" >
<TextView
android:id="@+id/variableStatus"
android:layout_width="30sp"
android:layout_height="wrap_content"
android:gravity="center"
android:background="@drawable/status_right"/>
<TextView
android:id="@+id/variableName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:paddingLeft="5sp"/>
<TextView
android:id="@+id/variableValue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:paddingLeft="5sp" />
<TextView
android:id="@+id/variableUnit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_alignParentRight="true"
android:paddingLeft="5sp" />
</RelativeLayout>代码改为:
//LinearLayout variableLayout = (LinearLayout)inflater.inflate(R.layout.variable_item, null);
RelativeLayout variableLayout = (RelativeLayout)inflater.inflate(R.layout.variable_item, null);结果真的是可以右对齐了:
当然,余下的事情,要去解决左边那3个TextView的错乱问题。
【总结】
此处最终实现了控件的右对齐,是通过把之前的几个控件的parent从LinearLayout换为RelativeLayout就可以了。
暂时没有真正搞懂,为何
android:layout_gravity="right"
不起作用。
转载请注明:在路上 » 【已解决】Android中调整布局使得控件右对齐