listView 行に触れたときに発生するオレンジ色のハイライトを無効にしたい。これまでのところ、xml で次のことを試しました。
android:focusable="false"
android:focusableInTouchMode="false"
android:clickable="false"
詳細: ユーザーがこの listView オブジェクトの画面に触れたときに、差がないようにしたいと考えています。
listView 行に触れたときに発生するオレンジ色のハイライトを無効にしたい。これまでのところ、xml で次のことを試しました。
android:focusable="false"
android:focusableInTouchMode="false"
android:clickable="false"
詳細: ユーザーがこの listView オブジェクトの画面に触れたときに、差がないようにしたいと考えています。
これを xml に追加します。
android:listSelector="@android:color/transparent"
そして、問題についてはこれでうまくいくかもしれません(よくわかりませんし、より良い解決策があるかどうかもわかりません):
ColorStateListを TextView に適用できます。
RoflcoptrExceptionの答えはうまくいくはずですが、何らかの理由でそれは私にはうまくいきませんでした、それで私は私のために働いた解決策を投稿しています、それが誰かを助けることを願っています
<ListView
android:listSelector="@android:color/transparent"
android:cacheColorHint="@android:color/transparent"
/>
オレンジ色のハイライト効果は、ListView のスタイルです。この記事では、listView スタイルをオーバーライドする方法の概要を説明しています。
基本的に、現在の状態に基づいてさまざまなスタイル要素を指定するセレクターがあります。
短くて迅速な解決策については、これを参照してください https://stackoverflow.com/a/12242564/185022
ListViewから : フォーカス ハイライトを無効にします。
ListAdapter
次のコードを使用するように設定するとき
ListAdapter adapter = new SimpleCursorAdapter(MyList, Layout, c,
new String[] { "Name", "Score" }, to)
{
public boolean areAllItemsEnabled()
{
return false;
}
public boolean isEnabled(int position)
{
return false;
}
};
BaseAdapter
これにより、クラスがオーバーライドされます。また、セル間の白枠も解除されます。
これをlistselectorと一緒にurXMlにも追加します。それが機能することを願っています
<ListView
android:cacheColorHint="@android:color/transparent"
android:listSelector="@android:color/transparent"/>
仮想デバイスと実際のデバイスでいくつかの「グーグル」とテストを行った後、以下のコードが機能することに気付きました。
ArrayAdapter<String> myList = new ArrayAdapter<String>(this, R.layout.list_item, strText) {
public boolean isEnabled(int position)
{
return false;
}
};
その部分を省略していることに注意してareAllItemsEnabled()
ください。
これ以外には何も役に立ちません:
transparent_drawable.xml
:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#00000000"/>
</shape>
layout.xml
:
android:listSelector="@drawable/transparent_drawable"
コードで
listView.setSelector(getResources().getDrawable(R.drawable.transparent));
小さな透明な画像を描画可能なフォルダーに追加します。
Like: transparent.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#00000000"/>
</shape>
私にとってandroid:focusableInTouchMode="true"
は進むべき道です。android:listSelector="@android:color/transparent"
役に立たない。各行に多数のオブジェクトを含むカスタム リストビューを使用していることに注意してください。
別の方法として:
listView.setSelector(android.R.color.transparent);
また
listView.setSelector(new StateListDrawable());
以下を追加するだけです。
android:cacheColorHint="@android:color/transparent"
pos
から取得したものを取得して、次のことを行うことができonItemClick
ます。
listView.setItemChecked(pos, false);
それが私が知っている最良の方法です
単一のリスト ビュー アイテムの強調表示を無効にするが、セルを有効にしたままにする場合は、そのセルの背景色を設定して強調表示を無効にします。
たとえば、セル レイアウトで次のように設定します。android:background="@color/white"