3

私はそのようなコードを持っています:)そして、カスタム設定レイアウトのテキストプロパティを編集したいと思います。ただし、getView 関数からオブジェクトに加えられた変更は、設定画面の実際のリストには影響しません。何か案は?私は PreferenceScreen を拡張できないことを知っています。この場合、他のタイプの設定を使用することはできません。コードのレイアウトからカスタム テキストビューを編集できるようにしたいだけです。

PreferenceScreen settings = getPreferenceManager().createPreferenceScreen(this);

settings.setLayoutResource(R.layout.mypreference);
View test = (View) settings.getView(null,getListView());

TextView text = (TextView)test.findViewById(R.id.text);
text.setText("BLA BLA");    
4

4 に答える 4

8

使用する必要がありますが、StackOverflow に関するgetView(convertView, parent)無数の未回答の質問から、誰も使用方法を知らないことは明らかです。したがって、私たちの唯一のオプションは、カスタムを作成することですPreference:

新しいクラスを作成します。

public class CustomPreference extends Preference {
    public CustomPreference(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    protected void onBindView(View rootView) {
        super.onBindView(rootView);

        View myView = rootView.findViewById(R.id.myViewId);
        // do something with myView
    }
}

xml/preferences.xml、カスタム設定を追加します。

<your.package.name.CustomPreference
    android:key="custom_preference"
    android:layout="@layout/custom_layout" />
于 2015-01-29T04:51:18.647 に答える
0

以下のカスタム レイアウトを使用します。

custom_preferences_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">
    <Button 
        android:id="@+id/preview_button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:layout_marginBottom="20dp"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:text="@string/notification_preview" />
    <ListView 
        android:id="@android:id/list"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</LinearLayout>

上記のファイルをユーザー設定 xml ファイルと共に使用すると、カスタム レイアウトのアイテムにアクセスできます。

public class CustomPreferenceActivity extends PreferenceActivity {

    @Override
    protected void onCreate(Bundle bundle){
        super.onCreate(bundle);
        addPreferencesFromResource(R.xml.custom_preferences);
        setContentView(R.layout.custom_preferences_layout);
    }

    private void initCustomizePreferences(){
        //Button
        Button button = (Button)findViewById(R.id.preview_button);
        //Do something with the button.

    }

}

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

于 2013-03-14T16:25:09.767 に答える
-2

私は実際に PreferenceActivity のビューをいじったことはありませんが、これは私が行うことです (通常は ListPreferences に対して)

ListPreference listPref;
CheckBoxPreference cbPref;

// Set the summary as the current listpref value
listPref = (ListPreference) findPreference("list_pref_key");
listPref.setSummary(listPref.getEntry()); 

// change the title / summary / ??? of any preference
findPreference("anothe_pref_key").setTitle("New Title");
findPreference("anothe_pref_key").setSummary("New subtext for the view");

これにより、将来のバージョンで PreferenceActivity / PreferenceFragment で使用されるレイアウトが変更された場合でも、コードを変更する必要はありません。

于 2012-08-30T07:53:02.470 に答える