大家好:
想請教我有一個bottom_nav_menu.xml
使用上是OK了
但我想要新增個scroll bar,按哪個按鈕他就會移到哪
&我想要圖是和文字的間距大一點,但我
android:title="\n地點"
文字就會不見......還有哪些替代方案呢
程式碼:
bottom_nav_menu.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/A"
android:icon="@drawable/A"
android:title="A" />
<item
android:id="@+id/B"
android:icon="@drawable/B"
android:title="B" />
<item
android:id="@+id/C"
android:icon="@drawable/C"
android:title="C" />
<item
android:id="@+id/D"
android:icon="@drawable/D"
android:title="D" />
</menu>
java:
BottomNavigationView nav_view=(BottomNavigationView)findViewById(R.id.nav_view);
nav_view.setSelectedItemId(R.id.location);
nav_view.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
switch (menuItem.getItemId()){
case R.id.A:
startActivity(new Intent(getApplicationContext(),A.class));
return true;
//.........
}
return false;
}
});
xml:
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/nav_view"
android:layout_width="match_parent"
android:layout_height="80dp"
app:labelVisibilityMode="labeled"
android:background="?android:attr/windowBackground"
android:layout_alignParentBottom="true"
app:layout_behavior="@string/hide_bottom_view_on_scroll_behavior"
app:menu="@menu/bottom_nav_menu" />
謝謝大家
根據你的需求 覺得你可以考慮使用 TabLayout
可以參考看看這個Sample 當你想要調整內容時 你可以只調整Item.xml來達到需求目的
// Activity onCreate呼叫createTabLayout()
private void createTabLayout() {
TabLayout tab = findViewById(R.id.tabLayout);
String[] tabText = {"A", "B", "C", "D"}; // tabItem 文字
int[] tabImage = {R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher}; // tabItem 圖片
for (int i = 0; i < tabText.length; i++) {
tab.addTab(tab.newTab().setCustomView(customTabView(tabText[i], tabImage[i])));
}
tab.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
// 選擇位置
Log.i( "onTabSelected: ", String.valueOf(tab.getPosition()));
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
// 取消選擇的位置
Log.i( "onTabUnselected: ", String.valueOf(tab.getPosition()));
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
}
private View customTabView(String tabText, int imageId) {
View view = LayoutInflater.from(this).inflate(R.layout.tab_item, null);
TextView tabTextView = view.findViewById(R.id.tabText);
ImageView tabImageView = view.findViewById(R.id.tabImage);
tabTextView.setText(tabText);
tabImageView.setImageResource(imageId);
return view;
}
layout.xml
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".TabLayoutTest">
<com.google.android.material.tabs.TabLayout
android:id="@+id/tabLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>
tab_item.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/tabImage"
android:layout_width="36dp"
android:layout_height="36dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/stickern" />
<TextView
android:id="@+id/tabText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="TextView"
app:layout_constraintEnd_toEndOf="@+id/tabImage"
app:layout_constraintStart_toStartOf="@+id/tabImage"
app:layout_constraintTop_toBottomOf="@+id/tabImage" />
</androidx.constraintlayout.widget.ConstraintLayout>
好久沒見了, 最近還好嗎?
小魚
謝謝關心 除身體有些狀況外 稍微還算可以
感謝你還記得我 那你最近還好嗎?
很久沒有接觸Android了 感覺都快已經不認識
今天看到這問題還稍微認識了新元件
希望能幫人解答
謝謝莓莓( • ` v´• ) ,我會參考這個辦法,目前還是暫用BottomNavigationView,我已經找到文字跟icon拉開的方法了,但scrollbar還不曉得怎麼做,研究中....謝謝
神威
稍微幫你搜尋了一下 但是我沒有辦法幫你做測試
但是你可以參考看看關鍵字或是嘗試此內容的作法
https://stackoverflow.com/questions/54741711/how-to-set-indicator-in-bottomnavigationview
還好,
所以最近做哪一方面的工作?
莓莓( • ` v´• ) 謝謝你,我已經做出來了~~
神威 不客氣 是我給你的那一個方法嗎 還是你自己有其他方法做出來 我也想知道怎麼做
小魚 跟之前一樣 不過受到疫情影響稍微可以抽點時間出來看程式
莓莓( • ` v´• )你好:
你的方法我有試用,我也有用自己的方法,不過比較土就是了...
不介意我獻醜一下:
com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/nav_view"
android:layout_width="match_parent"
android:layout_height="100dp"
android:layout_alignParentBottom="true"
android:background="?android:attr/windowBackground"
app:labelVisibilityMode="labeled"
app:itemIconTint="@drawable/bottom_navigation_selector"
app:itemTextColor="@drawable/bottom_navigation_selector"
app:menu="@menu/bottom_nav_menu">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<View
android:id="@+id/t"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_weight=".75"
android:layout_marginTop="95dp"
/>
<View
android:id="@+id/line2"
android:layout_width="0dp"
android:layout_height="6dp"
android:layout_weight=".25"
android:layout_marginTop="95dp"
android:background="#00CE7C"/>
</LinearLayout>
</com.google.android.material.bottomnavigation.BottomNavigationView>
利用view畫線,再用LinearLayout設定比例即可完成~~
謝謝
能達成需求都能視為好方法吧
我還沒想到可以這麼做 謝謝你分享方法