2

プロジェクトにカスタム設定を追加しました (以下のコード)。カスタムwidgetLayoutを使用して設定xmlに追加しました:

<w.PlusOnePreference 
    android:title="Rate App"
    android:key="custom"
    android:widgetLayout="@layout/plusone_pref"/>

優先レイアウト xml:

<?xml version="1.0" encoding="utf-8"?>
<com.google.android.gms.plus.PlusOneButton    
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:plus="http://schemas.android.com/apk/lib/com.google.android.gms.plus"
android:id="@+id/plus_one_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:focusable="false"
plus:size="standard" />

レイアウトが表示され、レイアウト内のボタンは正常に機能します。唯一の問題は、設定をクリックできないことです。何かの陰に隠れているような。

クリック可能にする方法についてのアイデアはありますか?

通常の設定 (ウィジェット レイアウトなし) を追加すると、正常に動作します。

ありがとう。

public class PlusOnePreference extends Preference {

private PlusClient mPlusClient = null; 

public PlusOnePreference(Context context) {
    super(context);

}


public PlusOnePreference(Context context, AttributeSet attrs) {
    super(context, attrs);
}

public PlusOnePreference(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
}

public void setPlusClient(PlusClient plusClient) {
    mPlusClient = plusClient;
}



@Override
protected void onBindView(View view) {
    super.onBindView(view);     
    //mPlusOneButton = 
    PlusOneButton plusOneButton = (PlusOneButton)view.findViewById(R.id.plus_one_button);
    plusOneButton.initialize(mPlusClient, SettingsActivity.URL, SettingsActivity.PLUS_ONE_REQUEST_CODE);
}
  }
4

3 に答える 3

4

Pskink の回答と Ran のコメントをまとめると、次のようになります。

  • カスタム設定のレイアウトがViewGroup(例: *Layout) の場合は、次を使用します。android:descendantFocusability="blocksDescendants"
  • 1 つだけの場合Viewは、android:focusable="false"
于 2013-12-09T19:18:49.640 に答える