web-dev-qa-db-ja.com

Android:listViewクリックでハイライトを無効にする

ListViewの行をタッチしたときに発生するオレンジ色のハイライトを無効にしたいです。これまでのところ私のxmlでは、次のことを試みました。

Android:focusable="false"
Android:focusableInTouchMode="false"
Android:clickable="false"

より詳しい情報:ユーザーがこのlistViewオブジェクトの画面に触れたときに差がゼロになるようにしたいです。

292
John Moffitt

これをあなたのxmlに追加してください:

Android:listSelector="@Android:color/transparent"

そして問題のためにこれは働くかもしれません(私はよくわからないし、より良い解決策があるかどうかもわかりません)。

あなたのTextViewに ColorStateList を適用することができます。

655

RoflcoptrExceptionの答えはうまくいくはずですが、何らかの理由でそれが私のために働かなかったので、私は私のために働いた解決策を投稿しています。

<ListView 
Android:listSelector="@Android:color/transparent" 
Android:cacheColorHint="@Android:color/transparent"
/>
188
Mushtaq Jameel

オレンジ色のハイライト効果は、ListViewでは スタイル です。 この記事 は、listViewスタイルをオーバーライドする方法の概要を説明しています。

基本的に、現在の状態に基づいてさまざまなスタイル要素を指定するセレクタがあります。

短くて素早い解決方法はこちらをご覧ください https://stackoverflow.com/a/12242564/185022

101
Cheryl Simon

から 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クラスをオーバーライドします。セル間の白い枠線もキャンセルされます。

62
emdog4

listselectorと共にur XMlにもこれを追加してください。

<ListView
Android:cacheColorHint="@Android:color/transparent"
Android:listSelector="@Android:color/transparent"/> 
38
sheetal

リストアイテムの入力にArrayAdapterまたはBaseAdapterを使用している場合。 OverrideメソッドはisEnabledメソッドを返し、falseを返します。

 @Override
  public boolean isEnabled (int position) {
    return false;
  }
32
Libin

仮想および実デバイス上で数回「グーグル」してテストした後、私は以下のコードがうまくいくことに気付いた。

ArrayAdapter<String> myList = new ArrayAdapter<String>(this, R.layout.list_item, strText) {
    public boolean isEnabled(int position) 
    { 
            return false; 
    } 
};

areAllItemsEnabled()部分を省略したことに注意してください。

13
aerobrain

これ以外に役に立ちません。

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"
11

コード内

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"

5
Prakash

私にとってAndroid:focusableInTouchMode="true"は行くべき道です。 Android:listSelector="@Android:color/transparent"は役に立ちません。各行に多数のオブジェクトを含むカスタムリストビューを使用していることに注意してください。

5
erdomester

代替手段として:

listView.setSelector(Android.R.color.transparent);

または

listView.setSelector(new StateListDrawable());
4
Natali

これを行うには速くて簡単な方法があります。

private void OnItemSelected(object sender, SelectedItemChangedEventArgs e)
{
    //TODO
    ((ListView)sender).SelectedItem = null;
}

それが役立つことを願っています;)

1
FeldonDragon

posから取得したonItemClickを取得して、次の操作を実行できます。

listView.setItemChecked(pos, false);

それは私が知っている最善の方法です

0
Chief Madog

単一のリストビューアイテムの強調表示を無効にしてセルを有効にしたい場合は、そのセルの背景色を設定して強調表示を無効にします。

たとえば、セルレイアウトでAndroid:background="@color/white"を設定します。

0
GLee