android 在代码中动态设置android:layout_marginLeft="28px"
时间: 2024-10-17 22:02:53 浏览: 5
在Android布局XML文件中,`android:layout_marginLeft`属性用于设置视图的左侧外边距。但在代码中动态修改该属性通常是在运行时对已经加载的View对象进行操作,而不是在XML里直接设置。这需要通过`LayoutParams`或者直接修改View的` MarginLayoutParams`来实现。
例如,如果你已经有了一个TextView的实例,可以这样做:
```java
// 获取TextView的LayoutParams对象
ViewGroup.MarginLayoutParams layoutParams = (ViewGroup.MarginLayoutParams) textView.getLayoutParams();
// 设置新的左侧外边距
layoutParams.leftMargin = 28; // 单位通常是像素
textView.setLayoutParams(layoutParams);
```
这里假设`textView`是一个可以直接访问其LayoutParams的对象,如`LinearLayout.LayoutParams`或`RecyclerView.LayoutParams`等。注意,如果应用了约束布局(ConstraintLayout),则需要先将LayoutParams转换为`MarginLayoutParams`。
相关问题
<RelativeLayout android:layout_width="match_parent" android:layout_height="200px" android:orientation="horizontal"> <TextView android:id="@+id/Quality" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="180px" android:layout_marginTop="50px" android:paddingTop="10px" android:text="空气质量:" android:textColor="#000000" android:textSize="20dp" /> <TextView android:id="@+id/data_of_quality" android:layout_width="100px" android:layout_height="100px" android:layout_marginTop="50px" android:layout_toRightOf="@+id/Quality" android:paddingTop="10px" android:textSize="20dp" /> </RelativeLayout>不用RelativeLayout怎么写
可以使用LinearLayout来代替RelativeLayout。代码如下:
```
<LinearLayout
android:layout_width="match_parent"
android:layout_height="200dp"
android:orientation="horizontal">
<TextView
android:id="@+id/Quality"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="180dp"
android:layout_marginTop="50dp"
android:paddingTop="10dp"
android:text="空气质量:"
android:textColor="#000000"
android:textSize="20sp" />
<TextView
android:id="@+id/data_of_quality"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_marginTop="50dp"
android:layout_weight="1"
android:paddingTop="10dp"
android:textSize="20sp" />
</LinearLayout>
```
在LinearLayout中,我们将layout_weight属性设置为1,这样就可以让data_of_quality的宽度自适应屏幕大小,同时又不会挤压Quality的空间。
修改代码让ImageView在LinearLayout中居右显示: <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/local" android:gravity="center_vertical" android:orientation="horizontal"> <TextView android:id="@+id/time" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="10sp" android:text="03月31日 10:51发布" /> <ImageView android:id="@+id/like" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="10sp" android:layout_gravity="end" android:background="@drawable/ic_likes" /> </LinearLayout>
可以在ImageView的属性中加入android:layout_gravity="end",即可让ImageView在LinearLayout中居右显示。代码如下:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/local"
android:gravity="center_vertical"
android:orientation="horizontal">
<TextView
android:id="@id/time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10sp"
android:text="03月31日 10:51发布" />
<ImageView
android:id="@id/like"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="10sp"
android:layout_gravity="end"
android:background="@drawable/ic_likes" />
</LinearLayout>
阅读全文