大家好日子。
我的TableLayout
每行有三个TextView
个。是否仍然可以将OnClickListener
添加到整行?我想更改所选行的背景颜色。我通过执行以下操作将OnClickListener
设置为TableRow
,但背景颜色不会改变:
for(int i =0; i < rowAmount; i++)
{
TableRow tr= new TableRow(this);
TextView rmNo;
TextView s;
TextView p;
rmNo = new TextView(this);
s = new TextView(this);
p = new TextView(this);
rmNo.setText("" + roomNumbers.get(i).toString());
s.setText("" + statuses.get(i).toString());
p.setText("" + priorities.get(i).toString());
tr.addView(rmNo);
tr.addView(s);
tr.addView(p);
tr.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
tr.setBackgroundColor(color.holo_blue_light);
}
});
tblContent.addView(tr);
}
}
我正在创建TableRows和TextViews programmaticaly,因为他们的数据是从数据库中检索的。
这是XML:
<ScrollView
android:id="@+id/scroll"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/tblTitles">
<TableLayout
android:id="@+id/tblContent"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_below="@+id/ob">
</TableLayout>
</ScrollView>
非常感谢任何帮助/想法。
已经查询的来源:
How can I highlight the table row on click ?
How to change the background color of a TableRow when focused?
答案 0 :(得分:3)
我测试了它,现在它运行正常,尝试使用
tr.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
v.setBackgroundColor(getResources().getColor(android.R.color.holo_blue_light));
}
});
,而不是...
答案 1 :(得分:1)
shape.xml
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" >
<shape>
<gradient
android:startColor="#DDA0DD"
android:endColor="#ffff00"
android:angle="270" />
<corners
android:radius="3dp" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
</item>
<item android:state_focused="true" >
<shape>
<gradient
android:endColor="#ff00ff"
android:startColor="#000fff"
android:angle="270" />
<stroke
android:width="3dp"
android:color="#f0f0f0" />
<corners
android:radius="3dp" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
</item>
<item>
<shape>
<gradient
android:endColor="#000000"
android:startColor="#000000"
android:angle="270" />
<stroke
android:width="1dp"
android:color="#000000" />
<corners
android:radius="3dp"
/>
<padding
android:left="1dp"
android:top="1dp"
android:right="1dp"
android:bottom="10dp" />
</shape>
</item>
</selector>
然后添加
tr.setBackgroundDrawable(getResources().getDrawable(R.drawable.shape));
答案 2 :(得分:1)
tr.setOnClickListener(this);
而不是
tr.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
tr.setBackgroundColor(color.holo_blue_light);
}
});
然后
@Override
public void onClick(View v)
{
//you can set background color of 'v'
v.setBackgroundColor(color.holo_blue_light);
}
答案 3 :(得分:0)
你使用的是哪种版本
试试这个
tr.setBackgroundColor(Color.BLACK);
或
tr.setBackgroundColor(Color.WHITE);