使用java写一个android项目,一个activity中包含一个PreferenceScreen,PreferenceScreen中有一个SwitchPreference,SwitchPreference使用自定义布局,从左到右分别是switch、title、icon
时间: 2024-01-22 20:21:36 浏览: 169
首先在res/layout文件夹下创建一个新的布局文件,例如"custom_switch_preference.xml",并在其中定义自定义布局:
```xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?android:attr/listPreferredItemHeight"
android:gravity="center_vertical"
android:paddingStart="?android:attr/listPreferredItemPaddingStart"
android:paddingEnd="?android:attr/listPreferredItemPaddingEnd">
<Switch
android:id="@android:id/switch_widget"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:focusable="false"
android:clickable="false"
android:layout_gravity="center_vertical" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center_vertical"
android:layout_marginStart="16dp">
<TextView
android:id="@+android:id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceListItem"
android:textColor="?android:attr/textColorPrimary"
android:singleLine="true"
android:ellipsize="marquee" />
<TextView
android:id="@+android:id/summary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceListItemSecondary"
android:textColor="?android:attr/textColorSecondary"
android:singleLine="true"
android:ellipsize="marquee" />
</LinearLayout>
<ImageView
android:id="@+android:id/icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:layout_gravity="center_vertical" />
</LinearLayout>
```
在你的PreferenceScreen中使用这个自定义布局:
```xml
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<SwitchPreference
android:key="switch_preference"
android:title="Switch Preference"
android:icon="@drawable/ic_launcher"
android:widgetLayout="@layout/custom_switch_preference" />
</PreferenceScreen>
```
最后,在你的Activity中加载这个PreferenceScreen:
```java
public class MyActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
getFragmentManager().beginTransaction()
.replace(android.R.id.content, new MyPreferenceFragment())
.commit();
}
public static class MyPreferenceFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
}
}
}
```
这样就完成了自定义布局的SwitchPreference,从左到右分别是switch、title、icon。
阅读全文