Android下部ナビゲーションバー実現(二)のRadioGroup
5791 ワード
ここでは、Androidの下部ナビゲーションバーがRadioGroup+Fragmentで実現されたことを簡単に記録します.
レイアウト:
ここのdrawableTopはステータスセレクタを使用しています
style
コード#コード#
初期化されたコードは記録されていません.findViewByIdはいくつかあります.実装プロセスはRadioButtonをリスニングすることにほかならません.
ステータスの設定
ここで注意しなければならないのは、setDefaultFragment()です.私はonCreateVewに書いても有効ではありません.ここではonStart()メソッドに書きました.
説明:このいくつかの文章はあまり多くの文字の叙述がなくて、これらのものも難しくないため、その上すべてよく使うので、多くの人が手のひらを指していると信じて、多く言うのもくだらない話で、直接コードを見ているのはかえってもっとはっきりしています.
DownLoad Demo
レイアウト:
ここのdrawableTopはステータスセレクタを使用しています
-
-
style
コード#コード#
初期化されたコードは記録されていません.findViewByIdはいくつかあります.実装プロセスはRadioButtonをリスニングすることにほかならません.
mRadioGroup.setOnCheckedChangeListener(this);
@Override
public void onCheckedChanged(RadioGroup group, int checkId) {
FragmentTransaction transaction = getFragmentManager().beginTransaction();
switch (checkId) {
case R.id.rb_home:
if (mHomeFragment == null) {
mHomeFragment = HomeFragment.newInstance(getString(R.string.item_home));
}
transaction.replace(R.id.sub_content, mHomeFragment);
break;
case R.id.rb_location:
if (mLocationFragment == null) {
mLocationFragment = LocationFragment.newInstance(getString(R.string.item_location));
}
transaction.replace(R.id.sub_content, mLocationFragment);
break;
case R.id.rb_like:
if (mLikeFragment == null) {
mLikeFragment = LikeFragment.newInstance(getString(R.string.item_like));
}
transaction.replace(R.id.sub_content, mLikeFragment);
break;
case R.id.rb_me:
if (mPersonFragment == null) {
mPersonFragment = PersonFragment.newInstance(getString(R.string.item_person));
}
transaction.replace(R.id.sub_content, mPersonFragment);
break;
}
setTabState();//
transaction.commit();
}
ステータスの設定
private void setTabState() {
setHomeState();
setLocationState();
setLikeState();
setMeState();
}
/**
* set tab home state
*/
private void setHomeState() {
if (mRadioHome.isChecked()) {
mRadioHome.setTextColor(ContextCompat.getColor(getActivity(), R.color.colorPrimary));
} else {
mRadioHome.setTextColor(ContextCompat.getColor(getActivity(), R.color.black));
}
}
private void setLocationState() {
if (mRadioLocation.isChecked()) {
mRadioLocation.setTextColor(ContextCompat.getColor(getActivity(), R.color.colorPrimary));
} else {
mRadioLocation.setTextColor(ContextCompat.getColor(getActivity(), R.color.black));
}
}
private void setLikeState() {
if (mRadioLike.isChecked()) {
mRadioLike.setTextColor(ContextCompat.getColor(getActivity(), R.color.colorPrimary));
} else {
mRadioLike.setTextColor(ContextCompat.getColor(getActivity(), R.color.black));
}
}
private void setMeState() {
if (mRadioMe.isChecked()) {
mRadioMe.setTextColor(ContextCompat.getColor(getActivity(), R.color.colorPrimary));
} else {
mRadioMe.setTextColor(ContextCompat.getColor(getActivity(), R.color.black));
}
}
ここで注意しなければならないのは、setDefaultFragment()です.私はonCreateVewに書いても有効ではありません.ここではonStart()メソッドに書きました.
@Override
public void onStart() {
setDefaultFragment();// onCreateView , Fragment
super.onStart();
}
説明:このいくつかの文章はあまり多くの文字の叙述がなくて、これらのものも難しくないため、その上すべてよく使うので、多くの人が手のひらを指していると信じて、多く言うのもくだらない話で、直接コードを見ているのはかえってもっとはっきりしています.
DownLoad Demo