androidfragment導航欄
㈠ android沉浸式
1、如何修改狀態欄顏色。
2、如何修改狀態欄文字顏色。
3、如何不被虛擬鍵隱藏,或隱藏虛擬鍵。
4、如何消除沉浸式。
5、如何修改導航欄內部的fragment的狀態欄顏色。
可參考: https://www.imooc.com/article/74825
在styles.xml中添加style
在manifest.xml文件中進行配置
添加依賴
可以參考:暫無
以下內容可以直接復制到工具類中,在activity初始化的時候調用即可。文字顏色分亮色暗色,分別是白色和黑色。
可以參考: https://www.jianshu.com/p/ce65dc7b0b56
以下方法可以放置在工具類中方便調用。
1、不隱藏底部虛擬鍵,不隱藏狀態欄,布局頂部延伸至狀態欄頂部不被虛擬鍵遮擋,且狀態欄透明。
2、隱藏底部的虛擬鍵和狀態欄
fragment的狀態欄顏色其實就是activity狀態欄顏色,所以還是去改變activity的狀態欄顏色這么一個思路。
使用第三方組件,所以添加依賴
給導航欄控制項添加tab切換事件監聽,然後動態改變狀態欄顏色即可,同樣使用barUtils工具類。
最後在推薦一個github上的關於沉浸式效果的組件:
https://github.com/yanzhenjie/Sofia
㈡ Android:我用RadioGroup在下方做導航欄指向不同的Fragment。我想在切換Fragment時能保存狀態,怎麼辦
在onCreate 方法中先把第一個fragment先裝進去,
後面每次點相應的RadioButton就用transaction.replace方法來裝另一個fragment,具體代碼如下:
public class MainActivity extends Activity {
private FragmentTransaction transaction;
//這是三個fragment
private Homefragment mHomeFragment;
private Mintaofragment mMinTaoFragment;
private Servicefragment mServicefragment;
private RadioGroup mMainRadioGroup;
public View mMainView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main1);
mMainView = new View(this);
transaction = getFragmentManager().beginTransaction();
mHomeFragment = new Homefragment();
transaction.add(android.R.id.tabcontent, mHomeFragment);
transaction.commit();
mMainRadioGroup = (RadioGroup) findViewById(R.id.radiogroup);
mMainRadioGroup.setOnCheckedChangeListener(checkedChangeListener);
}
private OnCheckedChangeListener checkedChangeListener = new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId) {
case R.id.radio_home:
if (null == mHomeFragment) {
mHomeFragment = new Homefragment();
}
replaceFragment(mHomeFragment);
break;
case R.id.radio_mintao:
if (null == mMinTaoFragment) {
mMinTaoFragment = new Mintaofragment();
}
replaceFragment(mMinTaoFragment);
break;
case R.id.radio_service:
if (null == mServicefragment) {
mServicefragment = new Servicefragment();
}
replaceFragment(mServicefragment);
break;
default:
break;
}
}
};
public void replaceFragment(Fragment fragment) {
transaction = getFragmentManager().beginTransaction();
transaction.replace(android.R.id.tabcontent, fragment);
// Commit the transaction
transaction.commit();
}
}
㈢ Android ViewPager + Fragment 實現導航欄(可以左右滑動)
先上圖
使用HorizontalScrollView可以讓超出屏幕的導航欄可以滑動,每個RadioButton代表一個導航標題,android:button="@null"去掉RadioButton的選中圓圈
選中的下劃線xml文件
將RadioButton導航欄的標題裝在一個list集合裡面,新增標題的時候可以直接在list里添加RadioButton的id,簡約了ViewPage滑動定位到相應的RadioButton和相應的Fragment,不用when每個id去判斷。
增加標題時也要add對應的Fragment
繼承FragmentStatePagerAdapter 。當ViewPager中的Fragment數量相對較多時繼承FragmentStatePagerAdapter,少時可以繼承FragmentPagerAdapter
㈣ Android4.0底部導航欄最常用是什麼方法實現的
一般都是使用viewpager,下面的是導航欄indicator。點擊導航欄可以切換上面的頁面,當然,滑動上面的頁面下面的導航欄也可以切換。
接著說一下它的實現。類的代碼不復雜,大部分參照了viewpagerindicator中的TabPageIndicator類來實現,不過在這里我繼承的是LinearLayout
㈤ android 底部導航欄 使用事務添加fragment 但是 始終報錯
api中transaction沒有add(int)方法。
㈥ 安卓關於用fragement實現導航欄,假設已經寫好了三個fragement的xml文件,底部有三
相關代碼:
/**
* 初始化fragment
*/
private void setFragmentIndicator(int whichIsDefault) {
mFragments = new Fragment[3];
mFragments[0] = getSupportFragmentManager().findFragmentById(R.id.fragment_home);
mFragments[1] = getSupportFragmentManager().findFragmentById(R.id.fragment_search);
mFragments[2] = getSupportFragmentManager().findFragmentById(R.id.fragment_settings);
getSupportFragmentManager().beginTransaction().hide(mFragments[0])
.hide(mFragments[1]).hide(mFragments[2]).show(mFragments[whichIsDefault]).commit();
FragmentIndicator mIndicator = (FragmentIndicator) findViewById(R.id.indicator);
FragmentIndicator.setIndicator(whichIsDefault);
mIndicator.setOnIndicateListener(new OnIndicateListener() {
@Override
public void onIndicate(View v, int which) {
getSupportFragmentManager().beginTransaction()
.hide(mFragments[0]).hide(mFragments[1])
.hide(mFragments[2]).show(mFragments[which]).commit();
}
});
}
網址:http://blog.csdn.net/loongggdroid/article/details/9366413
㈦ android底部導航欄怎麼做,
可以使用radiogroup做底部導航
radiogroup的屬性自定義,並設置android:button="@null"
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="60dip"
android:background="@drawable/bottom_bg"
android:orientation="horizontal" >
<RadioGroup
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<RadioButton
style="@style/navigation_bottom_radio"
android:drawableTop="@drawable/bottom_home_d"
android:text="@string/home_tv" />
<RadioButton
style="@style/navigation_bottom_radio"
android:drawableTop="@drawable/bottom_looks_d"
android:text="@string/style_tv" />
<RadioButton
style="@style/navigation_bottom_radio"
android:drawableTop="@drawable/bottom_cam"
android:gravity="center"
android:text="拍照"
/>
<RadioButton
style="@style/navigation_bottom_radio"
android:drawableTop="@drawable/bottom_shopping_d"
android:text="@string/shopping_tv" />
<RadioButton
style="@style/navigation_bottom_radio"
android:drawableTop="@drawable/bottom_show_d"
android:text="@string/show_tv" />
</RadioGroup>
</LinearLayout>
<resources>
<style name="navigation_bottom_radio">
<!-- 內部組件的排列 -->
<item name="android:gravity">center_horizontal</item>
<!-- 背景樣式 -->
<item name="android:background">@drawable/style_navigation_radio</item>
<!-- 寬度 -->
<item name="android:layout_width">fill_parent</item>
<!-- 高度 -->
<item name="android:layout_height">wrap_content</item>
<!-- 設置RadioButton的原來圖片為空 -->
<item name="android:button">@null</item>
<!-- 與其他組件寬度占相同比重 -->
<item name="android:layout_weight">1.0</item>
<!-- 底部的空隙 -->
<item name="android:paddingBottom">2.0dip</item>
<!-- 頂部的空隙 -->
<item name="android:paddingTop">2.0dip</item>
<!-- 文字的大小 -->
<item name="android:textSize">11dip</item>
<!-- 文字的顏色 -->
<item name="android:textColor">@color/white</item>
</style>
</resources>
參考:http://blog.csdn.net/longyi_java/article/details/8485826
㈧ 新手誠心求助,安卓開發底部的導航欄除了用fragment還有別的選擇嗎
純Activity不是不可以,方案如下:
底部用TabLayout
上方就一個activity layout xml布局
通過切換tab來 控制每個tab對應的 布局塊的 visibility
可以達到不用fragment的效果。
但是:
從軟體工程的角度上講fragment把每個tab邏輯分離,不需要管理其它tab的事情。
耦合度較低。會讓你的代碼可閱讀性更高。代碼是寫給人看的,如果把全部布局,邏輯都揉在一個activity里,估計過不了一周,你可能都看不懂自己的代碼了。
㈨ Android 目前最流行的 底部導航欄 用什麼做的
很多android應用底部都有一個底部導航欄,方便用戶在使用過程中隨意切換。目前常用的做法有三種:一種是使用自定義tabHost,一種是使用activityGroup,一種是結合FrameLayout實現。筆者再做了多款應用後,為了節約開發周期,封裝了一個抽象類,只要三步便可完成底部欄的生成及不同頁面的調用。
public class extends ActivityCollection {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setBottomTabBackground(resId);// 設置底部導航背景圖
@Override
protected boolean isShowWindowFeature() {
return true;//設置是否顯示title;
@Override
protected ListIndicatorInfo> setDrawableCollections() {
ListIndicatorInfo> IndicatorInfos = new ArrayListIndicatorInfo>();
IndicatorInfo indicatorInfo_1 = new IndicatorInfo(R.drawable.baby1,
R.drawable.baby1_s, R.string.baby1, 12, Color.WHITE,
new Intent(.this,
Activity01.class));
IndicatorInfo indicatorInfo_2 = new IndicatorInfo(R.drawable.baby2,
R.drawable.baby2_s, R.string.baby2, 12, Color.WHITE,
new Intent(.this,
Activity02.class));
IndicatorInfo indicatorInfo_3 = new IndicatorInfo(R.drawable.baby3,
R.drawable.baby3_s, R.string.baby3, 12, Color.WHITE,
new Intent(.this,
Activity03.class));
IndicatorInfo indicatorInfo_4 = new IndicatorInfo(R.drawable.baby4,
R.drawable.baby4_s, R.string.baby4, 12, Color.WHITE,
new Intent(.this,
Activity04.class));
IndicatorInfos.add(indicatorInfo_1);
IndicatorInfos.add(indicatorInfo_2);
IndicatorInfos.add(indicatorInfo_3);
IndicatorInfos.add(indicatorInfo_4);
return IndicatorInfos;
第一步:導入jar包;
第二步:讓你的homeactivity 繼承ActivityCollection類;
第三步:將你的圖片資源及跳轉intent放入list中,設置可選項;
雛形就形成啦!
㈩ 求教android studio大神:用fragment寫一個導航欄,在每個fragment裡面加listview,能實現點擊事件
AndroidStudio製作底部導航欄以及用Fragment實現切換功能,用戶點擊底部導航欄可以實現三個模塊的跳轉。
圖片資源
需要底部導航欄三個點擊按鈕的圖片資源
main_button_1.png,main_button_2.png,main_button_3.png
以及點擊變換的圖片資源
main_button_1_selected.png,
main_button_2_selected.png,
main_button_3_selected.png.
以上圖片資源都放進drawable文件夾中
activity_main 布局
在 MainActivity 頁面中主要有兩個區域:
一個是放 Fragment 的 main_body
一個是放底部導航欄的 main_bottom_bar
主要的Fragment代碼塊: