android 实现默认标题和自定义标题二、自定义DialogFragment

先上效果图,由于字数问题,后续会可能会出三


图一是在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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值