Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 设置线性布局中视图的权重_Java_Android_Android Linearlayout - Fatal编程技术网

Java 设置线性布局中视图的权重

Java 设置线性布局中视图的权重,java,android,android-linearlayout,Java,Android,Android Linearlayout,下面是我想要达到的目标 每个圆角视图都是线性布局。LinearLayout内部的3个视图的权重均应为1。现在,当我运行下面的代码时,没有显示任何内容。仅显示背景,但不显示任何视图 LinearLayout.LayoutParams params2 = new LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.MATCH_PARENT); params1.weight = 1; LinearLayout.LayoutParams pa

下面是我想要达到的目标

每个圆角视图都是线性布局。LinearLayout内部的3个视图的权重均应为1。现在,当我运行下面的代码时,没有显示任何内容。仅显示背景,但不显示任何视图

LinearLayout.LayoutParams params2 = new LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.MATCH_PARENT);
params1.weight = 1;

LinearLayout.LayoutParams params3 = new LinearLayout.LayoutParams(0, 75);
params1.weight = 1;

LinearLayout.LayoutParams params4 = new LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.MATCH_PARENT);
params1.weight = 1;

ll.addView(levelTV, params4);
ll.addView(recordTV, params2);
ll.addView(image, params3);
linearlayout.addView(ll, params1);

设置权重时,不应该将宽度设置为零吗?当我将宽度更改为
LinearLayout.LayoutParams.MATCH_PARENT
时,我看到的只是数字(1、2、3等),其他什么都没有。如何获得所需的布局?

有很多方法可以做到这一点,只是取决于您如何处理它。大多数情况下,最好使用XML创建布局,因为它可以将视图创建逻辑与应用程序逻辑分开,从而使代码更清晰。而且,在我看来,一旦习惯了XML,这是最简单的。我将展示几种处理您的问题的方法

border.xml

<?xml version="1.0" encoding="UTF-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
<solid android:color="#ffffffff"/>    

<stroke android:width="3dp"
        android:color="#ff000000"
        />

<padding android:left="1dp"
         android:top="1dp"
         android:right="1dp"
         android:bottom="1dp"
         /> 

<corners android:bottomRightRadius="7dp" 
         android:bottomLeftRadius="7dp" 
         android:topLeftRadius="7dp"
         android:topRightRadius="7dp"/> 
</shape>

你有没有注意到你所有的重量都是为params1准备的?提供信息的变量名总是一个好主意。哦,兄弟,那太傻了。无论如何谢谢你!我们都去过,都做过,对吗?:)这就是我复制和粘贴的结果。:)通过XML肯定可以更容易地实现这一点,有什么原因需要通过编程实现吗?
<?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="wrap_content"
    android:background="@drawable/border"
    android:layout_margin="2dp" >

    <TextView
        android:id="@+id/text_number"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingLeft="16dp"
        android:paddingTop="16dp"
        android:paddingBottom="16dp"
        android:text="1"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:layout_alignParentLeft="true" />

    <TextView
        android:id="@+id/text_record"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Record: ###"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:layout_centerInParent="true" />

    <CheckBox
        android:id="@+id/checkBox1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:paddingRight="8dp"
        android:checked="true"/>

</RelativeLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/main_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <include layout="@layout/row_view"/>
    <include layout="@layout/row_view"/>
    <include layout="@layout/row_view"/>


</LinearLayout>
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;

public class MainActivity extends Activity {

    private static final int NUMBER_OF_ROWS = 3;

    private static final int XML_TRAVERSAL = 1;
    private static final int ADD_VIEW = 2;

    private static int current_type = ADD_VIEW;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        if(current_type == XML_TRAVERSAL){
            setUpUsingTraversal();
        } else {
            setUpByInflating();
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }


    private void setUpUsingTraversal(){
        setContentView(R.layout.container_view);

        LinearLayout main_view = (LinearLayout) findViewById(R.id.main_view);

        int count = main_view.getChildCount();
        for(int i = 0; i < count ; i++){
            RelativeLayout layout = (RelativeLayout) main_view.getChildAt(i);
            setTextOnViews(layout, i);      
        }

    }

    private void setUpByInflating() {       
        LinearLayout layout = new LinearLayout(this);
        layout.setOrientation(LinearLayout.VERTICAL);
        layout.setLayoutParams(new ViewGroup.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));

        for(int x = 0; x < NUMBER_OF_ROWS ; x++){
            RelativeLayout row = (RelativeLayout) getLayoutInflater().inflate(R.layout.row_view, layout, false);
            setTextOnViews(row,x);
            layout.addView(row);
        }

        setContentView(layout);
    }

    private void setTextOnViews(ViewGroup view, int position){
        ((TextView)view.getChildAt(0)).setText(Integer.toString(position));
        ((TextView)view.getChildAt(1)).setText("Record: " + Integer.toString(position));    
    }

}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/main_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="2dp"
        android:background="@drawable/border" >

        <TextView
            android:id="@+id/text_number1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:paddingBottom="16dp"
            android:paddingLeft="16dp"
            android:paddingTop="16dp"
            android:text="1"
            android:textAppearance="?android:attr/textAppearanceLarge" />

        <TextView
            android:id="@+id/text_record1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:text="Record: ###"
            android:textAppearance="?android:attr/textAppearanceSmall" />

        <CheckBox
            android:id="@+id/checkBox1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:checked="true"
            android:paddingRight="8dp" />
    </RelativeLayout>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="2dp"
        android:background="@drawable/border" >

        <TextView
            android:id="@+id/text_number2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:paddingBottom="16dp"
            android:paddingLeft="16dp"
            android:paddingTop="16dp"
            android:text="2"
            android:textAppearance="?android:attr/textAppearanceLarge" />

        <TextView
            android:id="@+id/text_record2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:text="Record: ###"
            android:textAppearance="?android:attr/textAppearanceSmall" />

        <CheckBox
            android:id="@+id/checkBox2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:checked="true"
            android:paddingRight="8dp" />
    </RelativeLayout>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="2dp"
        android:background="@drawable/border" >

        <TextView
            android:id="@+id/text_number3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:paddingBottom="16dp"
            android:paddingLeft="16dp"
            android:paddingTop="16dp"
            android:text="3"
            android:textAppearance="?android:attr/textAppearanceLarge" />

        <TextView
            android:id="@+id/text_record3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:text="Record: ###"
            android:textAppearance="?android:attr/textAppearanceSmall" />

        <CheckBox
            android:id="@+id/checkBox3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:checked="true"
            android:paddingRight="8dp" />
    </RelativeLayout>


</LinearLayout>
<?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="wrap_content"
    android:orientation="horizontal"
    android:background="@drawable/border" >

    <TextView
        android:id="@+id/text_number"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="16dp"
        android:text="1"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <TextView
        android:id="@+id/text_record"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:gravity="center"
        android:text="Record: ###"
        android:textAppearance="?android:attr/textAppearanceSmall" />

    <CheckBox
        android:id="@+id/checkBox1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:checked="true"
        android:paddingRight="8dp" />

</LinearLayout>
LinearLayout.LayoutParams forNumberAndCheckBox = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);

LinearLayout.LayoutParams forRecord = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT, 1);