日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

为Android Studio中的SettingsActivity定制任务栏 (Setting Activity其实本质上是从PreferenceActivity中继承过来的)

發(fā)布時間:2023/12/18 Android 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 为Android Studio中的SettingsActivity定制任务栏 (Setting Activity其实本质上是从PreferenceActivity中继承过来的) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Android Studio為開發(fā)者提供了很多內建的Activity, 其中Settings Activity是非常有用且功能強大的一種內建Activity.

Setting Activity其實本質上是從PreferenceActivity中繼承過來的。使用Setting Activity后,完全不需要自己控制Preferences的讀寫,PreferenceActivity會幫我們處理一切。

PreferenceActivity和普通的Activity不同,它不再使用普通的界面布局文件,而是使用選項設置的布局文件。選項設置的布局文件以PreferenceScreen作為根元素,每一個PreferenceScreen對應后臺的一個PreferenceFragment。

使用Android Studio添加一個Activity,會默認幫我們生成一個Pref_header.xml文件和若干個Pref*.xml文件。對應到Activity里,需要對應定義幾個PreferenceFragment和重寫onBuildHeaders方法用于載入定義在Pref_header.xml中的入口布局。

相應的代碼片段如下

Pref_header.xml

<preference-headers xmlns:android="http://schemas.android.com/apk/res/android"><!-- These settings headers are only used on tablets. --><headerandroid:fragment="com.example.xpshen.myapplication.SettingsActivity$GeneralPreferenceFragment"android:icon="@drawable/ic_info_black_24dp"android:title="@string/pref_header_general" /><headerandroid:fragment="com.example.xpshen.myapplication.SettingsActivity$NotificationPreferenceFragment"android:icon="@drawable/ic_notifications_black_24dp"android:title="@string/pref_header_notifications" /><headerandroid:fragment="com.example.xpshen.myapplication.SettingsActivity$DataSyncPreferenceFragment"android:icon="@drawable/ic_sync_black_24dp"android:title="@string/pref_header_data_sync" /></preference-headers>

?

Pref_general.xml

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"><SwitchPreferenceandroid:defaultValue="true"android:key="example_switch"android:summary="@string/pref_description_social_recommendations"android:title="@string/pref_title_social_recommendations" /><!-- NOTE: EditTextPreference accepts EditText attributes. --><!-- NOTE: EditTextPreference's summary should be set to its value by the activity code. --><EditTextPreferenceandroid:capitalize="words"android:defaultValue="@string/pref_default_display_name"android:inputType="textCapWords"android:key="example_text"android:maxLines="1"android:selectAllOnFocus="true"android:singleLine="true"android:title="@string/pref_title_display_name" /><!-- NOTE: Hide buttons to simplify the UI. Users can touch outside the dialog todismiss it. --><!-- NOTE: ListPreference's summary should be set to its value by the activity code. --><ListPreferenceandroid:defaultValue="-1"android:entries="@array/pref_example_list_titles"android:entryValues="@array/pref_example_list_values"android:key="example_list"android:negativeButtonText="@null"android:positiveButtonText="@null"android:title="@string/pref_title_add_friends_to_messages" /></PreferenceScreen>

?

SettingActivity.java

public class SettingsActivity extends AppCompatPreferenceActivity { ...@Override@TargetApi(Build.VERSION_CODES.HONEYCOMB)public void onBuildHeaders(List<Header> target) {loadHeadersFromResource(R.xml.pref_headers, target);} ... @TargetApi(Build.VERSION_CODES.HONEYCOMB)public static class GeneralPreferenceFragment extends PreferenceFragment {@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);addPreferencesFromResource(R.xml.pref_general);setHasOptionsMenu(true);// Bind the summaries of EditText/List/Dialog/Ringtone preferences// to their values. When their values change, their summaries are// updated to reflect the new value, per the Android Design// guidelines.bindPreferenceSummaryToValue(findPreference("example_text"));bindPreferenceSummaryToValue(findPreference("example_list"));}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {int id = item.getItemId();if (id == android.R.id.home) {startActivity(new Intent(getActivity(), SettingsActivity.class));return true;}return super.onOptionsItemSelected(item);}} }

這樣一個setting activity就可以工作了。

但是此類activity由于不使用普通的界面布局文件,我們無法在布局文件中添加自定以的控件。

比如我們想要在頁面的底部添加一個任務欄,其實是無法簡單的通過修改布局文件來增加的。

?

本文采用的方法是基于下面文章的思路來的。

http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/0331/1608.html?

基本的思路是,在Setting Activity的onCreate方法中,截獲之前布局樹上的content元素,插入我們自定義的底部任務欄。

代碼如下

SettingActivity.java

@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setupActionBar();hookThebottomBar();BottomNavigationView navigation = (BottomNavigationView) findViewById(R.id.navigation);navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);}private void hookThebottomBar(){ViewGroup content = (ViewGroup) findViewById(android.R.id.content);LayoutInflater.from(this).inflate(R.layout.com_bottombar, content, true);}

com_bottombar.xml

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"xmlns:app="http://schemas.android.com/apk/res-auto"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_gravity="bottom"><android.support.design.widget.BottomNavigationViewandroid:id="@+id/navigation"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_gravity="bottom"android:background="?android:attr/windowBackground"app:menu="@menu/navigation" /></LinearLayout>

這里注意,我們攔截到的content其實是Framelayout,而我們的目標是添加一個底部任務欄,所以需要在上面的com_bottombar.xml設置?android:layout_gravity="bottom",這樣這個我們后續(xù)添加的幀才不會覆蓋之前的內容。

?

最后的效果圖如下

總結

以上是生活随笔為你收集整理的为Android Studio中的SettingsActivity定制任务栏 (Setting Activity其实本质上是从PreferenceActivity中继承过来的)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 一本到在线视频 | 国产一级性生活 | 男人天堂视频网 | 双性受孕h堵精大肚生子 | 亚洲免费在线观看 | 欧美视频一区二区三区 | 综合久久精品 | 香蕉成视频人app下载安装 | 2018av在线 | 欧美a级片视频 | 尤物视频在线观看国产性感 | 欧美日韩不卡合集视频 | 女人被男人躁得好爽免费视频 | 污站在线观看 | 亚洲播放器 | 亚洲最大黄色 | 中文字幕第六页 | 国产裸体舞一区二区三区 | 精品一区二区国产 | 88av在线播放 | 性国产精品 | 欧美熟妇交换久久久久久分类 | av线上免费观看 | 国产三级小视频 | 亚洲国产欧美精品 | 亚洲精品喷潮一区二区三区 | 欧美福利一区 | 亚洲成人激情小说 | 美女网站一区 | 国产精品精品软件视频 | 99热这里有精品 | 亚洲一级色 | 日本在线一 | 日本一区二区在线观看视频 | 亚洲首页 | 日韩性网 | 帮我拍拍漫画全集免费观看 | 欧美日韩一区二区在线观看 | 69久人妻无码精品一区 | 欧美777| 香蕉亚洲 | 欧美亚洲免费 | 日本中文不卡 | 九一国产在线观看 | 久草视频观看 | 亚洲涩视频 | 欧美成人激情在线 | 色黄啪啪网 | 怡春院一区二区 | 国产一区二区视频在线 | 久久久久夜夜夜精品国产 | 国产明星换脸xxxx色视频 | 午夜私人影院 | 女女同性女同一区二区三区九色 | 中文字幕精品一二三四五六七八 | 三极片黄色 | 最新国产视频 | 粉嫩av蜜桃av蜜臀av | 毛片看看| 国产精品视频在线播放 | 免费一级淫片 | 岳奶大又白下面又肥又黑水多 | 日日嗨av一区二区三区四区 | 亚洲精品一区二区三区新线路 | 国产精品综合在线 | 精品人妻在线播放 | av导航在线观看 | 日韩一区不卡视频 | 女大学生的家政保姆初体验 | 91gao | 天天色天天操天天射 | 性生活网址 | 亚洲天天做 | 三级中文字幕在线 | 在线伊人网 | 国产一区视频观看 | 中文字幕在线视频网站 | 亚洲一区精品在线 | 在线能看的av | 日韩xxx视频| 熟妇人妻久久中文字幕 | 国产午夜三级一区二区三 | av一区在线播放 | 亚洲在线免费看 | 日韩一区二区视频在线 | 欧美人与牲动xxxx | 日韩高清不卡一区 | 美女精品一区二区 | 伊人91在线 | 九九九国产 | 亚洲AV永久无码国产精品国产 | 亚洲欧美国产另类 | 农村少妇无套内谢粗又长 | www.youjizz.com中国 | 久久久久亚洲av成人人电影 | 日日爱夜夜操 | 成人欧美日韩 | 校园春色亚洲 | 成人精品视频一区二区三区尤物 |