簡體   English   中英

ImageView不能正確對齊

[英]ImageView does not align properly

我有以下設計,我想要我的左用戶圖像,然后在用戶圖像的右邊有textviews,在最右邊的是箭頭圖像。 但是,由於某些原因,箭頭沒有出現在最右邊

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:local="http://schemas.android.com/apk/res-auto"
  android:orientation="horizontal"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:padding="6dip"
  android:background="#FFFFFF">
  <ImageView
    android:id="@+id/userimage"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginRight="6dip"
    android:gravity="center"
    android:layout_alignParentLeft="true"
    android:src="@drawable/ic_person_black_24dp"
    android:layout_gravity="center_vertical" />
  <LinearLayout
    android:orientation="vertical"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:padding="6dip">
    <TextView
        android:id="@+id/username"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center_vertical"
        android:textSize="15dp"
        android:textColor="#040404"
        android:typeface="sans"
        android:textStyle="bold"
        android:text="Username_05"
        android:singleLine="true" />
    <TextView
        android:id="@+id/secondline"
        android:text="Text"
        android:layout_below="@id/username"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="10sp"
        android:textColor="#000000"
        android:singleLine="true" />
    </LinearLayout>
   <ImageView
    android:id="@+id/icon"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:src="@drawable/ic_keyboard_arrow_right_black"
    android:layout_gravity="center_vertical" />
 </LinearLayout>

這是我當前的輸出:

![在此處輸入圖片描述

更新1:

在此處輸入圖片說明

把事情簡單化。 使用LinearLayout而不是RelativeLayout的水平方向,並添加1。ImageView2。另一個layout_weight = 1且垂直方向的LinearLayout將包含兩個TextViews3。ImageView

抱歉,沒有發布任何代碼。 我來自手機;)

我認為這是因為您使用android:layout_width =“ match_parent”而不是包裝內容。

如果使用線性布局,則需要權重才能使用所有空間:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          xmlns:local="http://schemas.android.com/apk/res-auto"
          android:orientation="horizontal"
          android:layout_width="fill_parent"
          android:layout_height="wrap_content"
          android:padding="6dip"
          android:background="#FFFFFF">
<ImageView
    android:id="@+id/userimage"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginRight="6dip"
    android:gravity="center"
    android:layout_alignParentLeft="true"
    android:src="@drawable/ic_person_black_24dp"
    android:layout_gravity="center_vertical" />
<LinearLayout
    android:orientation="vertical"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:padding="6dip">
    <TextView
        android:id="@+id/username"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center_vertical"
        android:textSize="15dp"
        android:textColor="#040404"
        android:typeface="sans"
        android:textStyle="bold"
        android:text="Username_05"
        android:singleLine="true" />
    <TextView
        android:id="@+id/secondline"
        android:text="Text"
        android:layout_below="@id/username"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="10sp"
        android:textColor="#000000"
        android:singleLine="true" />
</LinearLayout>
<ImageView
    android:id="@+id/icon"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:src="@drawable/ic_keyboard_arrow_right_black"
    android:layout_gravity="center_vertical" />
</LinearLayout>

我想你正在尋找這樣的東西

在此處輸入圖片說明

沒有必要創建單獨的Imageview來容納圖標。 最好使用android:drawableLeftandroid:drawableRight來實現。

下面是示例代碼:

<TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="left|center"
        android:text="Testing"
        android:drawableLeft="@drawable/ic_account_circle_black_24dp"
        android:drawableRight="@drawable/ic_account_circle_black_24dp"/>

編輯:對於多行:

在此處輸入圖片說明

首先,請勿在RelativeLayout上使用android:orientation ,該屬性僅適用於LinearLayout

其次,您正在做循環引用:

  • 用戶名具有android:layout_above="@id/secondline"
  • SecondLine具有android:layout_below="@id/username"

這樣做時,系統不知道如何渲染視圖,因為它們彼此依賴。

嘗試這樣做:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:padding="6dip"
                android:background="#FFFFFF">
    <ImageView
        android:id="@+id/userimage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="6dip"
        android:layout_alignParentLeft="true"/>
    <TextView
        android:id="@+id/username"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center_vertical"
        android:textStyle="bold"
        android:text="Username_05"
        android:layout_toRightOf="@id/userimage"
        android:singleLine="true" />
    <TextView
        android:id="@+id/secondline"
        android:text="Text"
        android:layout_below="@id/username"
        android:layout_toRightOf="@+id/userimage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:singleLine="true"/>
    <ImageView
        android:id="@+id/icon"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"/>
</RelativeLayout>

結果:

在此處輸入圖片說明

只需使用layout_weight。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#FFFFFF"
android:orientation="horizontal"
android:padding="6dip">

<ImageView
    android:id="@+id/userimage"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_gravity="center_vertical"
    android:layout_marginRight="6dip"
    android:layout_weight=".1"
    android:gravity="center"
    android:src="@android:drawable/ic_menu_my_calendar" />

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_weight="5"
    android:orientation="vertical"
    android:padding="6dip">

    <TextView
        android:id="@+id/username"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center_vertical"
        android:singleLine="true"
        android:text="Username_05"
        android:textColor="#040404"
        android:textSize="15dp"
        android:textStyle="bold"
        android:typeface="sans" />

    <TextView
        android:id="@+id/secondline"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/username"
        android:singleLine="true"
        android:text="Text"
        android:textColor="#000000"
        android:textSize="10sp" />
</LinearLayout>

<ImageView
    android:id="@+id/icon"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_gravity="center_vertical|right"
    android:layout_weight="1"
    android:src="@android:drawable/arrow_down_float" />
</LinearLayout>

在此處輸入圖片說明

使用您在問題中提供的代碼,但在箭頭的ImageView中將android:layout_width="match_parent"更改為android:layout_width="wrap_content" 這應該使箭頭ImageView出現在完全右側

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM