0

ボタン付きのリストビューとテキストビューを選択できないことについて、このサイトで多くの投稿を見てきました。しかし、私の問題は異なり、他の関連する投稿から結論を導き出すことができません。BaseAdapter によって設定されたリストビューがあります。リスト ビューのレイアウトは、左側に 2 つのテキストビュー、右側に各行のボタンがあります。ボタンとリストビューの行全体を選択できるようにしたい。

使用時のボタンがフォーカスされていることはわかっています。ボタンと行全体の両方を選択可能にする方法を誰かに教えてもらえますか?

よろしく、アジット

4

3 に答える 3

0

私も同じ問題に直面し、Android API レベル 16 でどのように解決したかについてのサンプル コードを以下に示します。最も重要なことは、android:clickableandroid:focusableを true に設定することです。

行 XML ファイルで:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/row_layout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@android:drawable/list_selector_background"
    android:clickable="true"
    android:focusable="true"
    android:gravity="center_vertical"
    android:orientation="horizontal"
    android:padding="5dp" >

    <TextView
        android:id="@+id/label"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1" />

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/button" />

</LinearLayout>

次に、ベース アダプターで、リスナーが何かを行うように設定できます。

public class MyBaseAdapter extends BaseAdapter {

    // Some other method implementation here...

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // Initialize the convertView here...

        LinearLayout layout = (LinearLayout) convertView.findViewById(R.id.row_layout);
        Button button = (Button) convertView.findViewById(R.id.button);

        layout.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                Toast.makeText(context, "Row clicked!", Toast.LENGTH_LONG).show();
            }
        });
        button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                Toast.makeText(context, "Button clicked!", Toast.LENGTH_LONG).show();
            }
        });
    }

}
于 2012-09-09T08:02:41.003 に答える
0

はい、レイアウトでボタンの focusable を false に設定することで実行できます。これを行うと、問題が解決されます

List は、フォーカス可能な要素がない場合にのみクリックします。したがって、リストとボタンをクリックしたい場合は、ボタンのフォーカスを false に設定します。これにより、ボタンとリスト全体の両方をクリックできます

于 2012-03-01T09:16:10.383 に答える
0

android:onClick プロパティをレイアウト XML のボタンに追加します。

アンドロイド:オンクリック:

ビューがクリックされたときに呼び出す、このビューのコンテキスト内のメソッドの名前。この名前は、View 型のパラメーターを 1 つだけ取る public メソッドに対応している必要があります。たとえば、android:onClick="sayHello" を指定する場合、コンテキスト (通常はアクティビティ) の public void sayHello(View v) メソッドを宣言する必要があります。

于 2012-03-01T09:17:28.667 に答える