先上效果图,由于字数问题,后续会可能会出三
图一是在android 实现默认标题和自定义标题一的基础上修改的
android 实现默认标题和自定义标题一_安卓开发中如何设置标题-优快云博客
我们先实现图一的效果,如果没有看自定义标题一的,建议先看一下
我们是使用的自定义标题不是系统默认的,所以说
AndroidManifest.xml这个文件如果是使用系统默认的就需要该,是自定义的就不需要改
1. SettingsActivity.java 这个类 我们有所改动,把标题变成了透明的,多说无意上代码
public class SettingsActivity extends FragmentActivity {
MainActivityUtlis mainActivityUtlis = null;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.settings_activity);
mainActivityUtlis = new MainActivityUtlis();
final Toolbar toolbar = findViewById(R.id.action_bar);
if (toolbar != null) {
toolbar.setVisibility(View.VISIBLE);
setActionBar(toolbar);//把获取到的资源 放进去
}
mainActivityUtlis.setToolbar(SettingsActivity.this,"设置");
}
2. MainActivityUtlis.java是我的一个工具类,就放出来你们需要的这个方法
/**
* 设置状态栏文字颜色和透明
*/
public void status_bar(Activity activity) {
try {
Window window = activity.getWindow();
//设置状态栏文字色为深色,页面内容全屏
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
//设置状态栏背景色为透明
window.setStatusBarColor(Color.TRANSPARENT);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 设置工具栏、状态栏文字颜色和透明
*
* @param activity
* @param title
*/
public void setToolbar(Activity activity, String title) {
try {
ActionBar actionBar = activity.getActionBar();//获取资源有没有需要的Toolbar
if (actionBar != null) {
actionBar.setHomeButtonEnabled(true);//左上角 出现一个小箭头返回 是否可以点击
actionBar.setDisplayHomeAsUpEnabled(true);//左上角 出现一个小箭头返回
actionBar.setTitle(title);
actionBar.setDisplayShowTitleEnabled(true); //以显示标题
actionBar.setElevation(0); //支持视图之间的阴影和遮挡关系
}
status_bar(activity);
} catch (Exception e) {
Log.e(TAG, "setToolbar()" + e.getMessage());
e.printStackTrace();
}
}
如果getActionBar()报错了,去
3. R.layout.settings_activity 这个xml去看一下是不是 Toolbar 没有该过来,我这里使用到的还是自定义标题栏里面的
<LinearLayout
android:id="@+id/content_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:transitionGroup="true"
android:orientation="vertical">
<Toolbar
android:id="@+id/action_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="?android:attr/actionBarTheme" />
<FrameLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
4. 然后关键的到了 SettingMya.java 这个类改动很大,前面的方法还是老样子。就把工具类初始化了
public class SettingMya extends SettingsActivity {
static MainActivityUtlis mainActivityUtlis = null;
private static final String TAG = "SettingMya";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mainActivityUtlis = new MainActivityUtlis();
try {
if (savedInstanceState == null) {
getSupportFragmentManager()//打开另外一个片段
.beginTransaction()//打开事务
.replace(R.id.content_frame, new SettingsFragment())//先删除在添加 add()是添加
.commit();//添加
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 点击右上角的返回图片 就触发下面的方法
*
* @param item The menu item that was selected.
* @return
*/
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
onBackPressed();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
}
5.然后就到了关键的方法了 SettingsFragment.java 和root_preferences.xml里面使用到的图片都是在iconfont-阿里巴巴矢量图标库里面找的
public static class SettingsFragment extends PreferenceFragmentCompat implements Preference.OnPreferenceClickListener {
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
// addPreferencesFromResource(R.xml.root_preferences);
setPreferencesFromResource(R.xml.root_preferences, rootKey);
try {
Preference LogOut = findPreference("Log_out");
Preference prefAndroid = findPreference("prefAndroid");
Preference setting_name = findPreference("setting_name");
Preference clear_cache = findPrefe