Android LinearLayout 线性布局 3

前面几节我们都是在 activity_main.xml 中写死了 android:layout_weight 属性,如果我们需要在 Java 代码中动态更改 layout_weight 属性要怎么做呢?

android.view.ViewGroup 类提供了 setLayoutParams() 方法用来修改 android:layout_* 属性

void setLayoutParams (ViewGroup.LayoutParams params)

调用方法如下

setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,     
        LayoutParams.WRAP_CONTENT, 1));

LayoutParams() 实例化时的三个参数分别为

  1. layout_width 的值
  2. layout_height 的值
  3. layout_weight 的值

范例

首先创建一个 空的 Android 项目 cn.twle.android.linearlayout

接着修改 activity_main.xml 创建一个四列一一一一开布局 ( 使用 wrap_content )

为了在 Java 中调用方便,我们给父 <LinearLayout 设置一个 id android:id="@+id/LinearLayout1"

给第三个子 <LinearLayout 设置 id android:id="@+id/cyan"

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    
    xmlns:tools="http://schemas.android.com/tools"    
    android:id="@+id/LinearLayout1"    
    android:layout_width="match_parent"    
    android:layout_height="match_parent"    
    android:orientation="horizontal">    

    <LinearLayout    
        android:layout_width="wrap_content"    
        android:layout_height="fill_parent"    
        android:background="#ff0000"     
        android:layout_weight="1"/>    


    <LinearLayout    
        android:layout_width="wrap_content"    
        android:layout_height="fill_parent"    
        android:background="#00ff00"     
        android:layout_weight="1"/>

    <LinearLayout    
        android:layout_width="wrap_content"    
        android:layout_height="fill_parent"    
        android:background="#00ffff"     
        android:layout_weight="1"
        android:id="@+id/cyan">

    <LinearLayout    
        android:layout_width="wrap_content"    
        android:layout_height="fill_parent"    
        android:background="#0000ff"     
        android:layout_weight="1"/>
</LinearLayout>

运行结果如下

然后修改 MainActivity.java 设置第三个 LinearLayout 的权重为 2

package cn.twle.android.linearlayout55;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // 获取第三个 LinearLayout 实例
        LinearLayout linearLayout = (LinearLayout) findViewById(R.id.cyan);

        // 创建一个 LayoutParam 实例
        LinearLayout.LayoutParams lyParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.MATCH_PARENT,2);

        // 设置布局参数
        linearLayout.setLayoutParams(lyParams);


    }
}

运行结果如下图,我们发现第三个 LinearLayout 的权重已经变成 2 了

Android 基础教程

关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.