Android 설정 화면에 도구 모음 2가 표시됩니다.

3797 단어 preferencsAndroid

개요


저번 투고에서 선호 헤더에 도구막대를 추가했지만 진정으로 원하는 것은 단순한 설정 화면에 헤더를 추가하는 것뿐이다.드디어 이루어졌기 때문에 이번에는 그 방법을 기술해 보겠습니다.

컨디션


IDE:Android Studio 3.0.1
목표:mashmallow 이후

실현 방법에 관하여


개략

  • 화면 설정용Activity는PreferenceActivity가 아니라 AppCompoatActivity에서 파생된다.
  • 리소스에 LinerLayout을 추가하고 Toolbar과 Frame Layout을 추가합니다.
  • Activity를 만들 때 도구막대를 동작 막대로 설정합니다.
  • Activity를 만들 때 Frame Layout의 세그먼트를 Preference Fragment로 대체합니다.
  • 출처

    SettingsActivity.java
    
    public class SettingsActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_settings);
    
            // initialize toolbar
            this.initializeToolBar();
    
            // Display the fragment as the main content.
            getFragmentManager().beginTransaction()
                    .replace(R.id.fragment_container, new SettingsActivity.SettingsFragment())
                    .commit();
    
        }
    
        private void initializeToolBar() {
            Toolbar toolbar = (Toolbar) findViewById(R.id.settingsToolbar);
            setSupportActionBar(toolbar);
            toolbar.setNavigationOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    onBackPressed();
                }
            });
    
            // 戻るボタンの追加
            ActionBar actionBar = this.getSupportActionBar();
            if (actionBar == null) {
                return;
            }
            actionBar.setDisplayHomeAsUpEnabled(true);
        }
    
        public static class SettingsFragment extends PreferenceFragment {
            @Override
            public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
    
                // Load the preferences from an XML resource
                addPreferencesFromResource(R.xml.pref_settings);
            }
        }
    }
    
    res/layout/activity_settings.xml
    
    <?xml version="1.0" encoding="utf-8"?>
    <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    
        ・・・
        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">
    
        <android.support.v7.widget.Toolbar
            android:id="@+id/settingsToolbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:elevation="4dp"
            android:background="?attr/colorPrimary"
            android:minHeight="?attr/actionBarSize"
            android:theme="?attr/actionBarTheme" />
    
        <FrameLayout
            android:id="@+id/fragment_container"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            />
        </LinearLayout>
    </android.support.design.widget.CoordinatorLayout>
    

    감상


    이번 참고 페이지에서 존경할 만한 것은 LinerLayout에서 도구막대와 프레임 레이아웃을 설정하고 프레임 레이아웃의 세션을 Preference Fragment로 바꾸는 것이다.많은 샘플이android입니다.R.id.content를 자주 바꾸기 때문에 도구막대 아래에 설정을 표시하기 어렵습니다.코드가 이동하고 하고 있는 일을 이해했을 때 너무 즐거웠어요.

    참고 자료

    좋은 웹페이지 즐겨찾기