【已解决】Android中调整布局使得控件右对齐

【背景】

Android中,想要把当前UI中一些控件,实现右对齐。

【折腾过程】

1.参考了一堆的:

android:gravity / android:layout_Gravity,android:padding / android:layout_margin属性区分 – 学习Android – 51CTO技术博客

【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);

结果真的是可以右对齐了:

android the control finnally can aligh right but messy

当然,余下的事情,要去解决左边那3个TextView的错乱问题。

 

【总结】

此处最终实现了控件的右对齐,是通过把之前的几个控件的parent从LinearLayout换为RelativeLayout就可以了。

暂时没有真正搞懂,为何

android:layout_gravity="right"

不起作用。



发表评论

电子邮件地址不会被公开。 必填项已用*标注

无觅相关文章插件,快速提升流量