Android:Listview行高度在单击其包含的复选框时发生更改

时间:2012-01-28 21:52:20

标签: android listview checkbox height relativelayout

我有一个包含单个列表视图的活动。 此列表视图显示带有位图和复选框的relativeLayout,当没有位图可用时,将显示文本。

我的问题是包含没有位图的行。当我单击复选框时,行的高度会发生变化(选中复选框时会增加,未选中时会减少)

activity.xml

    <?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="match_parent"
    android:orientation="vertical" >

    <ListView
        android:id="@+id/myListView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:divider="@drawable/gradient_divider"
        android:dividerHeight="1dp" />
</LinearLayout>

row.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="match_parent"
    android:orientation="horizontal" >

    <ImageView
        android:id="@+id/banner"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:adjustViewBounds="true"
        android:layout_toLeftOf="@+id/registrationCheckBox"
        android:filter="true" >
    </ImageView>

    <TextView
        android:id="@+id/name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_centerVertical="true"
        android:layout_gravity="left"
        android:paddingLeft="5dp"
        android:layout_toLeftOf="@+id/registrationCheckBox" >
    </TextView>

    <CheckBox
        android:id="@+id/registrationCheckBox"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"      
        android:layout_centerVertical="true"  
        android:clickable="false"
        android:focusable="false"
        android:paddingRight="5dp" >
    </CheckBox>

</RelativeLayout>

我的活动代码

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity);

        hideActionBar(); 

        // init the controls
        initControls();

        // populate the listView
        this.adapter = new RegistrationAdapter(this, refreshContent());     
        this.listView.setAdapter(this.adapter);

        this.listView.setItemsCanFocus(false); 
        this.listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
        this.listView.setOnItemClickListener(
            new ListView.OnItemClickListener() {
                    @Override
                    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                        ViewHolder viewHolder = (ViewHolder) view.getTag();

...
                    }
            }
    );  

    }

在点击复选框时如何防止我的行高改变?

2 个答案:

答案 0 :(得分:1)

我认为你错过了这段代码的重要部分,那就是适配器代码。

您如何处理位图和文本之间的切换?

答案 1 :(得分:0)

也许将ImageView设置为固定高度(足够高以适合任何实际图像),或者在没有真实图像显示时提供虚拟不可见图像。