我试图进行底部导航,但我无法摆脱没有边距的居中。项目应居中并在它们之间留有空间(最大宽度为168dp,最小宽度为80dp here)。因此它们之间需要有空间。水平线性布局有什么解决方案吗?
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="48dp"
android:background="@android:color/white"
android:clickable="true"
android:clipToPadding="false"
android:elevation="16dp"
android:focusable="true"
android:orientation="horizontal">
<LinearLayout
android:id="@+id/bottomNav"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="horizontal" />
</FrameLayout>
// ------------------------------------
// the layout of the item (another file)
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?selectableItemBackgroundBorderless"
android:clickable="true"
android:focusable="true"
android:gravity="center"
android:maxWidth="168dp"
android:minWidth="80dp"
android:orientation="vertical">
<ImageView
android:id="@+id/icon"
android:layout_width="24dp"
android:layout_height="24dp"
android:contentDescription="Icon"
android:src="@drawable/ic_hd" />
<me.konrad.rocket.ui.components.SimpleTextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="0dp"
android:text="Home"
android:textAlignment="center"
android:textColor="#212121"
android:textSize="10dp" />
</LinearLayout>
答案 0 :(得分:1)
如果你按照自己的方式行事,那么你可以使用下面的方法。让您的项目布局如下。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="0dp"
android:layout_height="match_parent"
android:background="?selectableItemBackgroundBorderless"
android:layout_weight="1"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:id="@+id/img"
android:layout_width="wrap_content"
android:src="@mipmap/ic_launcher"
android:layout_height="wrap_content"
/>
<TextView
android:id="@+id/txt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello"
/>
并在运行时将视图添加为。
for(int i=0;i<4;i++){
View mView=LayoutInflater.from(this)
.inflate(R.layout.temp2,null);
((LinearLayout)findViewById(R.id.header)).addView(mView);
((LinearLayout.LayoutParams) mView.getLayoutParams()).weight = 1;
}
这似乎可以解决您的问题。但除此之外,您应该使用BottomNavigationView来获得更多的Material设计。它也很容易使用。