ListViewの行をタッチしたときに発生するオレンジ色のハイライトを無効にしたいです。これまでのところ私のxmlでは、次のことを試みました。
Android:focusable="false"
Android:focusableInTouchMode="false"
Android:clickable="false"
より詳しい情報:ユーザーがこのlistViewオブジェクトの画面に触れたときに差がゼロになるようにしたいです。
これをあなたのxmlに追加してください:
Android:listSelector="@Android:color/transparent"
そして問題のためにこれは働くかもしれません(私はよくわからないし、より良い解決策があるかどうかもわかりません)。
あなたのTextViewに ColorStateList を適用することができます。
RoflcoptrExceptionの答えはうまくいくはずですが、何らかの理由でそれが私のために働かなかったので、私は私のために働いた解決策を投稿しています。
<ListView
Android:listSelector="@Android:color/transparent"
Android:cacheColorHint="@Android:color/transparent"
/>
オレンジ色のハイライト効果は、ListViewでは スタイル です。 この記事 は、listViewスタイルをオーバーライドする方法の概要を説明しています。
基本的に、現在の状態に基づいてさまざまなスタイル要素を指定するセレクタがあります。
短くて素早い解決方法はこちらをご覧ください https://stackoverflow.com/a/12242564/185022
から ListView:Disable Focus Highlight 、
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と共にur XMlにもこれを追加してください。
<ListView
Android:cacheColorHint="@Android:color/transparent"
Android:listSelector="@Android:color/transparent"/>
リストアイテムの入力にArrayAdapter
またはBaseAdapter
を使用している場合。 Override
メソッドはisEnabled
メソッドを返し、false
を返します。
@Override
public boolean isEnabled (int position) {
return false;
}
仮想および実デバイス上で数回「グーグル」してテストした後、私は以下のコードがうまくいくことに気付いた。
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));
そして描画可能なフォルダに小さな透明な画像を追加します。
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:cacheColorHint="@Android:color/transparent"
私にとってAndroid:focusableInTouchMode="true"
は行くべき道です。 Android:listSelector="@Android:color/transparent"
は役に立ちません。各行に多数のオブジェクトを含むカスタムリストビューを使用していることに注意してください。
代替手段として:
listView.setSelector(Android.R.color.transparent);
または
listView.setSelector(new StateListDrawable());
これを行うには速くて簡単な方法があります。
private void OnItemSelected(object sender, SelectedItemChangedEventArgs e)
{
//TODO
((ListView)sender).SelectedItem = null;
}
それが役立つことを願っています;)
pos
から取得したonItemClick
を取得して、次の操作を実行できます。
listView.setItemChecked(pos, false);
それは私が知っている最善の方法です
単一のリストビューアイテムの強調表示を無効にしてセルを有効にしたい場合は、そのセルの背景色を設定して強調表示を無効にします。
たとえば、セルレイアウトでAndroid:background="@color/white"
を設定します。