对齐textview以在工具栏imageviews下显示文本

时间:2019-07-04 07:43:02

标签: android xml

我试图将文本放在底部工具栏中单击的图标下方。文本不会掉下来,看起来像这样:

not right

但是它希望它看起来像这样:

right

我正在使用带有以下标头的LinearLayout:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="?android:attr/actionBarSize"
android:orientation="horizontal"
android:background="@color/white">

我的代码如下所示(每个图标两个):

<ImageView
    android:id="@+id/nav_wallet"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:layout_weight="1"
    android:src="@drawable/ic_wallet" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="12sp"
    android:textColor="#8a000000"
    android:lineSpacingExtra="8sp"
    android:text="@string/wallet_label" />

4 个答案:

答案 0 :(得分:0)

您只需将TextView和ImageView封装在LinearLayout中即可。 当然,您还需要调整LinearLayout的宽度。

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical">
    <ImageView
        android:id="@+id/nav_wallet"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_weight="1"
        android:src="@drawable/ic_wallet" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="12sp"
        android:textColor="#8a000000"
        android:lineSpacingExtra="8sp"
        android:text="@string/wallet_label" />
</LinearLayout>

由于我不知道完整的XML代码,因此我无法告诉您所需的确切权重,因此您可能还需要花一些时间来获得所需的结果。

答案 1 :(得分:0)

您可以使用LinearLayout并对所有4列使用相等的权重。另外,下面可以有一个Textview是示例代码

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">


        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:drawableBottom="@android:drawable/alert_dark_frame"
            android:gravity="center"
            android:lineSpacingExtra="8sp"
            android:text="Hello" />


        <TextView
            android:id="@+id/nav_wallet"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:drawableBottom="@android:drawable/alert_dark_frame"
            android:gravity="center"
            android:lineSpacingExtra="8sp"
            android:text="Hello" />


        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:drawableBottom="@android:drawable/alert_dark_frame"
            android:gravity="center"
            android:lineSpacingExtra="8sp"
            android:text="Hello" />


        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:drawableBottom="@android:drawable/alert_dark_frame"
            android:gravity="center"
            android:lineSpacingExtra="8sp"
            android:text="Hello" />

    </LinearLayout>

答案 2 :(得分:0)

从您的代码片段看来,您似乎具有水平的LinearLayout作为图像和文本的父级。结果是您将所有项目水平对齐。作为解决方案,您可以将每个项目(文本和图像)放置在其自己的垂直布局中,并将这些布局放置在父水平LinearLayout中。但是,此解决方案创建了更深的视图层次结构,这对于当今的电话而言并不是真正的问题,但这并不是最佳实践。 保留当前父布局的一种更好的解决方案是使用compoundDrawable,如:

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/wallet_label" 
    android:drawableTop="@drawable/ic_wallet"
    android:gravity="center"/>

当然,您也可以使用ConstraintLayout。解决您的问题肯定有多种解决方案。

答案 3 :(得分:0)

谢谢大家的帮助,能够通过将每个textview和imageview放置在linearlayout中并与之隔开来解决此问题。

<LinearLayout
    android:orientation="vertical"
    android:layout_weight="1"
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:layout_gravity="center_horizontal"
    android:gravity="center_horizontal">
    <ImageView
        android:id="@+id/nav_wallet"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:src="@drawable/ic_wallet" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:gravity="center_horizontal"
        android:textSize="12sp"
        android:textColor="#8a000000"
        android:lineSpacingExtra="8sp"
        android:text="@string/wallet_label" />
</LinearLayout>

<LinearLayout
    android:orientation="vertical"
    android:layout_weight="1"
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:layout_gravity="center_horizontal"
    android:gravity="center_horizontal">
    <ImageView
        android:id="@+id/nav_transactions"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_transactions" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="12sp"
        android:textColor="#8a000000"
        android:lineSpacingExtra="8sp"
        android:text="@string/tx_label" />
</LinearLayout>

<LinearLayout
    android:orientation="vertical"
    android:layout_weight="1"
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:layout_gravity="center_horizontal"
    android:gravity="center_horizontal">
    <ImageView
        android:id="@+id/nav_browser"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_browser" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="12sp"
        android:textColor="#8a000000"
        android:lineSpacingExtra="8sp"
        android:text="@string/browser_label" />
</LinearLayout>

<LinearLayout
    android:orientation="vertical"
    android:layout_weight="1"
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:layout_gravity="center_horizontal"
    android:gravity="center_horizontal">
    <ImageView
        android:id="@+id/nav_settings"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_settings" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="12sp"
        android:textColor="#8a000000"
        android:lineSpacingExtra="8sp"
        android:text="@string/settings_label" />
</LinearLayout>