我在动态添加TableRow时遇到问题。

private void addRow(String body) {
        LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        TableRow row = (TableRow) inflater.inflate(R.layout.customrow,null);
        TextView name = (TextView) row.findViewById(R.id.customName);
        name.setText(body);
        row.setOnLongClickListener(this);
    }


我希望此行在onClickonLongClick上更改颜色。

customrow.xml文件中的代码是:

<TableRow xmlns:android="http://schemas.android.com/apk/res/android"
       android:id="@+id/tableRow1"
       android:layout_gravity="center"
       android:layout_height="wrap_content"
       android:layout_width="fill_parent"
       android:gravity="center_vertical"
       android:onClick="showOnClick">
    <TextView android:id="@+id/customName"
        android:textSize="25px"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TextView"
        android:layout_weight="5">
    </TextView>
</TableRow>


我试图在行中使用android:background="@drawable/clickedbackground",但它不起作用。

clickedbackground.xml文件中的代码是:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_selected="true" android:state_focused="false"
        android:state_pressed="false" android:drawable="@android:color/transparent" />
    <item android:state_selected="false" android:state_focused="false"
        android:state_pressed="false" android:drawable="@android:color/transparent" />
    <item android:state_pressed="true" android:drawable="@color/custom" />
    <item android:state_focused="true" android:state_selected="true"
        android:state_pressed="false" android:drawable="@color/custom" />
</selector>


任何人都知道我在做什么错(颜色/自定义是在另一个有效的xml中定义的)?

谢谢

最佳答案

您正在为tablerow命名行创建对象。并且您还有clickedbackground.xml文件。只需在addRow方法中使用以下代码。

row.setBackgroundResource(R.drawable.clickedbackground);

我认为这可以解决您的问题。

07-26 09:41