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

8

在 layout/plusone_pref.xml 中为您的 Button 设置 android:focusable="false"

于 2013-06-21T21:34:45.630 回答
4

将 Pskink 的回答与 Ran 的评论放在一起:

  • 如果您的自定义首选项的布局是ViewGroup(例如 *Layout),请使用android:descendantFocusability="blocksDescendants"
  • 如果只是一个View,请使用android:focusable="false"
于 2013-12-09T19:18:49.640 回答
0

首选项没有可点击属性,但有一种onClick()方法。试试android:selectable

于 2013-06-21T20:01:52.660 回答