通过级联使用LayoutInflater忽略Android LayoutWidth

时间:2010-02-14 00:13:10

标签: android

我正在建立一个按钮金字塔,并希望金字塔的大小能够动态变化。为了实现这一点,我有非常基本的XML文件来表示活动,活动的每一行和每个按钮。我正在根据对this question的接受回复对解决方案进行建模。金字塔构造正确,但没有遵守50dip按钮宽度。有什么想法吗?有没有更好的方法呢?

main.xml中:

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

row.xml:

<?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/row"  
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:gravity="center_horizontal"/>

btn.xml:

<?xml version="1.0" encoding="utf-8"?>
    <Button xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/button" 
        android:layout_width="50dip" 
        android:layout_height="wrap_content"/>

主要活动:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    inflate();
    }
private void inflate() {
    LinearLayout pyramidLayout = (LinearLayout) findViewById(R.id.pyramid);

    for (int row = 1 ; row <= mSize; ++row) {
        View rowView = getLayoutInflater().inflate(R.layout.row, null);
        LinearLayout rowLayout = (LinearLayout) rowView.findViewById(R.id.row);
        for (int column = 1; column <= row; ++column) {
            View btnView = getLayoutInflater().inflate(R.layout.btn, null);
            Button btn = (Button) btnView.findViewById(R.id.button);
            btn.setId(row*10 + column);
            rowLayout.addView(btnView);
        }
        pyramidLayout.addView(rowView); 
    }
}

2 个答案:

答案 0 :(得分:2)

在btn.xml中,将 layout_width =“50dip”更改为 width =“50dip”

答案 1 :(得分:0)

感谢您使用本教程。它真的帮助我:) 在我的情况下,我有一个视图(2个文本,1个图像,1个按钮)代表1个结果。 当用户点击“搜索”时,我需要多次显示它。所以你的例子对我而言是好的