在物品上为RecyclerView.LinearLayout填充TextView

时间:2015-12-11 11:19:47

标签: android android-layout

我想要一个简单的项目。左侧有一个图标,右侧有一个文本。我不想修复高度或宽度,因为根据用户的系统字体大小,文本可能会更大。

我的布局有两个问题。有人能告诉我如何解决以下问题吗?

  1. TextView没有填充剩余的项目(我将其涂成红色以查看它是否填充了该项目)并且某些项目上的文本被截断为椭圆形,即使项目上有足够的空间。 / LI>
  2. 我不知道如何垂直居中(项目高度可能因文本高度而异,这可能是用户的系统设置)。

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                  android:orientation="horizontal"
                  android:clickable="true"
                  android:focusable="true"
                  android:background="?android:attr/selectableItemBackground"
        >
        <ImageView
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:id="@+id/ivIcon"/>
        <TextView
            android:background="#FF0000"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:singleLine="true"
            android:id="@+id/tvText"
            android:padding="10dp"
            android:textSize="12pt"
            android:layout_weight="1">
        </TextView>
    </LinearLayout>
    
  3. --- Recycler View ---- 高度为0dp,因为我想用此Recycler View填充剩余高度。

            <android.support.v7.widget.RecyclerView
                android:id="@+id/rvList"
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_weight="1">
    
            </android.support.v7.widget.RecyclerView>

    申请“Nasz Njoka Sr。”的回答后。 enter image description here

2 个答案:

答案 0 :(得分:1)

你可以将imageview和textview一个左右对齐并删除权重而不是使用wrap_content

此处示例

    <ImageView
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_gravity="start"
            android:gravity="center"/>
     <TextView
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_gravity="end"
            android:gravity="center"/>

答案 1 :(得分:1)

因为SingleLine = true并且您应用于代码的权重,请尝试以下代码。

注意:请考虑文字大小最好使用sp(ScalePixels)代替pt,它会根据屏幕分辨率和像素密度自动调整。

<?xml version="1.0" encoding="utf-8"?>`<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?android:attr/selectableItemBackground"
android:clickable="true"
android:focusable="true"
android:orientation="horizontal">

<ImageView
    android:id="@+id/ivIcon"
    android:layout_width="40dp"
    android:layout_height="40dp"
    android:layout_gravity="center_vertical"
    android:src="@mipmap/ic_launcher" />

<TextView
    android:id="@+id/tvText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_vertical"
    android:background="#FF0000"
    android:padding="10dp"
    android:textSize="12sp" />

`