【问题标题】:How to set this view?如何设置此视图?
【发布时间】:2017-12-31 22:45:05
【问题描述】:

我想要一个回收站视图行作为给定的数字。基本上,图像视图将具有固定尺寸。两个文本视图应覆盖整个空间,但不应将图像视图移出屏幕。它也不应该裁剪它。 请忽略填充和边距。除了图像视图和两个文本视图之间会有一个边距。

我尝试过的:

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

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="0.8">

        <TextView
            android:id="@+id/tv1"
            android:layout_alignParentStart="true"
            android:layout_alignParentTop="true"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            />

        <TextView
            android:layout_alignParentStart="true"
            android:layout_below="@id/tv1"
            android:id="@+id/tv2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:maxLines="2"
            android:ellipsize="end"/>

    </RelativeLayout>

    <ImageView
        android:id="@+id/img"
        android:layout_weight="0.2"
        android:layout_width="85dp"
        android:layout_height="50dp"
        android:layout_marginStart="12dp"
        android:layout_centerVertical="true"
        android:scaleType="centerCrop"/>
</LinearLayout>

这样做的问题是图像视图的尺寸随着文本视图中的文本而变化。我不要那个。我希望尺寸是固定的。

我本可以将整个内容保持在相对布局中,但后来我无法在两个文本视图和图像视图之间保持空白。

【问题讨论】:

    标签: java android xml android-layout


    【解决方案1】:

    你的 RelativeLayout 应该是:

    <RelativeLayout
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1">
    

    ImageView 中删除android:layout_weight

    这将拉伸 RelativeLayout 以适应空间并保持 ImageView 相同的大小。

    【讨论】:

      【解决方案2】:

      您可以手动为其分配大小,而不是在文本视图中使用 wrap_content 功能,以便设置它而不是根据您拥有的文本量进行更改。

      android:layout_width="300dp"
      android:layout_height="200dp"
      

      您可能需要调整的实际尺寸才能完全符合您的要求。

      【讨论】:

      • 这会对不同的屏幕尺寸造成问题吗?
      • @ArkaPravaBasu 可以,但在这种情况下,您必须添加额外的 xml 文件以根据不同的屏幕尺寸定义调整大小。
      • 那么有什么方法可以避免分配尺寸吗?
      • @ArkaPravaBasu 据我了解,如果您想要定义不随文本改变的大小,您必须自己分配大小并另外创建文件以调整大小。如果您更喜欢视图自行调整大小的简单方法,那么事情可能不会按计划进行。我已经很久没有使用android了,但它似乎是这样的。
      【解决方案3】:

      我认为这就是您要寻找的。屏幕尺寸独立布局。唯一固定的尺寸在 ImageView 中。我已经添加了背景,因此您可以立即在 Android Studio 的预览中查看它。

      <?xml version="1.0" encoding="utf-8"?>
      <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                      android:layout_width="wrap_content"
                      android:layout_height="wrap_content"
                      xmlns:tools="http://schemas.android.com/tools">
      
          <LinearLayout
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:layout_alignBottom="@id/img"
              android:layout_toLeftOf="@id/img"
              android:layout_toStartOf="@id/img"
              android:orientation="vertical">
      
              <TextView
                  android:id="@+id/tv1"
                  android:layout_width="match_parent"
                  android:layout_height="0dp"
                  android:layout_weight="1"
                  android:background="#acacac"
                  android:gravity="center"
                  tools:text="TextView1"
                  />
      
              <TextView
                  android:id="@+id/tv2"
                  android:layout_width="match_parent"
                  android:layout_height="0dp"
                  android:layout_weight="1"
                  android:background="#d49e9e"
                  android:ellipsize="end"
                  android:gravity="center"
                  android:maxLines="2"
                  tools:text="TextView2"/>
          </LinearLayout>
      
          <ImageView
              android:id="@+id/img"
              android:layout_width="100dp"
              android:layout_height="180dp"
              android:layout_alignParentEnd="true"
              android:layout_alignParentRight="true"
              android:layout_alignParentTop="true"
              android:background="#90f760"
              android:scaleType="centerCrop"/>
      
      </RelativeLayout>
      

      【讨论】:

        【解决方案4】:

        这应该会给你想要的效果:

        <?xml version="1.0" encoding="utf-8"?>
        <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
        
        <TextView
            android:id="@+id/tv1"
            android:layout_alignParentStart="true"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_toLeftOf="@+id/img"
            android:layout_toStartOf="@+id/img"
            />
        <TextView
            android:layout_alignParentStart="true"
            android:layout_alignParentLeft="true"
            android:layout_alignRight="@+id/tv1"
            android:layout_alignEnd="@+id/tv1"
            android:layout_below="@id/tv1"
            android:id="@+id/tv2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:maxLines="2"
            android:ellipsize="end"/>
        <ImageView
            android:id="@+id/img"
            android:layout_width="85dp"
            android:layout_height="50dp"
            android:layout_marginStart="12dp"
            android:layout_marginLeft="12dp"
            android:layout_centerVertical="true"
            android:scaleType="centerCrop"
            android:layout_alignParentEnd="true"
            android:layout_alignParentRight="true"/>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-09-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-04-26
          相关资源
          最近更新 更多