我有这段代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="#ff00ff"
android:id="@+id/candyBox">
</LinearLayout>
我希望将上面的内容填充到1,2,3,4列中,如下所示:
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:weightSum="4"
>
<!-- 4 LAYERS of linear layout, ready to be inflated -->
<LinearLayout
android:orientation="vertical"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:weightSum="5"
android:id="@+id/column1"
android:gravity="bottom">
</LinearLayout>
<LinearLayout
android:orientation="vertical"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:weightSum="5"
android:id="@+id/column2">
</LinearLayout>
<LinearLayout
android:orientation="vertical"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:weightSum="5"
android:id="@+id/column3">
</LinearLayout>
<LinearLayout
android:orientation="vertical"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:weightSum="5"
android:id="@+id/column4">
</LinearLayout>
</LinearLayout>
我正在做这个简单的代码:
LinearLayout column1 = (LinearLayout)findViewById(R.id.column1);
View viewToLoad = getLayoutInflater().inflate(R.layout.candy_box, null);
column1.addView(viewToLoad);
似乎没有任何事情发生,我的代码有什么问题吗?看起来很简单。如果我硬编码的东西,一切都很好,但我需要动态插入,有一种“Java”的方式,有这...我需要这样做,我不知道它是如何的问题总和。
为了让它更清晰,我的最终结果应该是:
<LinearLayout
android:orientation="vertical"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:weightSum="5"
android:id="@+id/column1"
android:gravity="bottom">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="#ff00ff"
android:id="@+id/candyBox">
</LinearLayout>
...
</LinearLayout>
答案 0 :(得分:1)
我认为问题在于外部布局的重量 - weightSum应该在内部布局的外部和layout_weight中。 为了确保您所做的是正确的,我还建议对内部布局进行硬编码,并在IDE的图形设计页面中查看布局。
更新2:我想要的应该是这样的:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:weightSum="4"
android:background="#44000000"
>
<!-- 4 LAYERS of linear layout, ready to be inflated -->
<LinearLayout
android:orientation="vertical"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:weightSum="5"
android:id="@+id/column1"
android:gravity="bottom"
android:background="#33ffffff">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="#ff00ff"
android:id="@+id/candyBox1">
</LinearLayout>
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="#0000ff"
android:id="@+id/candyBox2">
</LinearLayout>
</LinearLayout>
<LinearLayout
android:orientation="vertical"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:weightSum="5"
android:id="@+id/column2"
android:background="#22ffffff"
android:gravity="bottom">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="3"
android:background="#ff0000"
android:id="@+id/candyBox3">
</LinearLayout>
</LinearLayout>
<LinearLayout
android:orientation="vertical"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:weightSum="5"
android:gravity="bottom"
android:id="@+id/column3">
</LinearLayout>
<LinearLayout
android:orientation="vertical"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:weightSum="5"
android:gravity="bottom"
android:id="@+id/column4">
</LinearLayout>
</LinearLayout>
答案 1 :(得分:1)
为什么在 LinearLayout 似乎是您的rootView元素时定义DataGridViewButtonColumn column = new DataGridViewButtonColumn();
column.Name = "Check-Out";
?
<强> 更新 强>
看起来你倒了一些东西。你应该通过id candy_box 找到并以编程方式设置 column1 。
试试这个。
android:layout_weight="1"
答案 2 :(得分:0)
问题是xml的结构:
我的布局不在根对象中,因此我必须执行以下操作:
column1 = (LinearLayout)findViewById(R.id.column1);
View v = getLayoutInflater().inflate(R.layout.candy_box,column1 ,false);
column1.addView(v);
false是键,表示它不是根元素。
解决!