gpt4 book ai didi

android - 单击表行时突出显示并在单击下一行时禁用

转载 作者:搜寻专家 更新时间:2023-11-01 08:52:49 25 4
gpt4 key购买 nike

我有一个包含多个数据的表行。单击一行时,该特定行会以深灰色突出显示。但是当我单击下一行时,单击的行会突出显示,但上一行仍会突出显示。如何禁用上一行的突出显示。我尝试了很多技巧,但没有用。

这是我的示例代码。

tableRow.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
v.setBackgroundColor(Color.DKGRAY);

}

我已经以编程方式创建了布局。我没有使用 XML。

提前致谢。

最佳答案

如果您想像使用通用 ListView 一样在点击高亮时使用股票,您需要将每一行的背景设置为

android:background="@drawable/selector"

这是一个例子:

<TableRow
android:id="@+id/tableRow1"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="1"
android:padding="5dip"
android:background="@drawable/selector">

这是 res\drawable 文件夹中的 selector.xml

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


<item android:drawable="@color/white"></item>

</selector>

更新:像下面一样以编程方式创建StateListDrawable,并将Background设置为您的TableRow:

 Drawable d1=activity.getResources().getDrawable(R.drawable.gradient_bg_hover);

GradientDrawable g = new GradientDrawable(Orientation.TOP_BOTTOM,
new int[] { Color.DKGRAY});
g.setGradientType(GradientDrawable.LINEAR_GRADIENT);

StateListDrawable states = new StateListDrawable();
states.addState(new int[] {android.R.attr.state_pressed,-android.R.attr.state_selected},d1);
states.addState(new int[] {-android.R.attr.state_focused},g);

table_row.setBackgroundDrawable(states);

这是 res\drawable 文件夹中的 gradient_bg_hover.xml

 <?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<!-- Gradient BgColor for listrow Selected -->
<gradient
android:startColor="#18d7e5"
android:centerColor="#16cedb"
android:endColor="#09adb9"
android:angle="270" />
</shape>

更新2:您可以根据需要向StateListDrawable 添加更多State

  1. android:state_activated: 设置 View 或其父 View 何时被“激活”,这意味着用户当前已将其标记为感兴趣。

  2. android:state_active: StateListDrawable 的状态值。

  3. android:state_enabled: 在启用 View 时设置。

  4. android:state_focused: StateListDrawable 的状态值,当 View 具有输入焦点时设置。

  5. android:state_pressed: 当用户在 View 中按下时设置。

  6. android:state_selected:当前选择 View (或其父 View 之一)时设置。

关于 StateListDrawable 的更多信息

关于android - 单击表行时突出显示并在单击下一行时禁用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21573507/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com