0

我有一個ListActivityArrayAdapter自定義使用list_item.xml。在這個xml文件中,我有一個ImageView和三個TextViewsAndroid - ListItem RelativeLayout文本在TextViews中心的高度wrap_content

ImageView和前兩個TextViews彼此相鄰排列,第三個TextView在右側排列。這一切都以滿意的方式工作。

現在我還想要在ListItem的中心對齊TextViews

現在我使用的是RelativeLayout,所以我能第三TextView右對齊,我用match_parentTextViews' layout_height,因爲我讀的地方它需要在TextView文本對齊到中心在RelativeLayouts

這是我目前list_item.xml

<?xml version="1.0" encoding="utf-8"?> 
<!-- The View for a single CheckListItem --> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/item_layout" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal"> 

    <ImageView 
     android:id="@+id/image" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_margin="5dp" 
     android:contentDescription="@string/checkbox_content_description" 
     android:src="@drawable/checkbox_unchecked" 
     android:background="@layout/transparent_background" 
     android:focusableInTouchMode="false" 
     android:clickable="false" 
     android:focusable="false" /> 

    <TextView 
     android:id="@+id/tv_amount" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:layout_toRightOf="@id/image" 
     android:layout_alignBottom="@id/image" 
     android:layout_alignParentTop="true" 
     android:gravity="center_vertical" 
     android:layout_margin="5dp" 
     android:focusableInTouchMode="false" 
     android:clickable="false" 
     android:focusable="false" 
     android:textIsSelectable="false" /> 

    <!-- NOTE: layout_toLeftOf has @+id/ instead of @id to create the R.id here --> 
    <TextView 
     android:id="@+id/tv_product_name" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:layout_toRightOf="@id/tv_amount" 
     android:layout_toLeftOf="@+id/tv_price" 
     android:singleLine="true" 
     android:ellipsize="end" 
     android:layout_alignBottom="@id/image" 
     android:layout_alignParentTop="true" 
     android:gravity="center_vertical" 
     android:layout_margin="5dp" 
     android:focusableInTouchMode="false" 
     android:clickable="false" 
     android:focusable="false" 
     android:textIsSelectable="false" 

     android:background="@layout/border" /> 
     <!-- TODO: Remove test border --> 

    <!-- NOTE: id has @id instead of @+id, because we created the ID in the tv_product_name in the layout_toLeftOf --> 
    <TextView 
     android:id="@id/tv_price" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:layout_alignParentRight="true" 
     android:layout_alignBottom="@id/image" 
     android:layout_alignParentTop="true" 
     android:gravity="center_vertical" 
     android:layout_margin="5dp" 
     android:focusableInTouchMode="false" 
     android:clickable="false" 
     android:focusable="false" 
     android:textIsSelectable="false" /> 

</RelativeLayout> 

結果如下:

enter image description here

我想要什麼,而不是爲:

enter image description here


編輯1:

三個TextViews改變android:gravity="center_vertical"android:gravity="center"後,文本僅在中心對齊的水平,而不是垂直方向:

enter image description here

+1

更改比重=中心 – Meghna

+0

@Sania如果我改變了'比重=「center_vertical」''到「中心」'在TextViews,文本只對準水平的中心,而不是垂直方向..: S(見編輯1) –

+0

不好意思把它改成居中水平 – Meghna

回答

1
//Try this way,i hope this will help you to solve your problem... 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/item_layout" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" 
    android:gravity="center"> 

    <ImageView 
     android:id="@+id/image" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_margin="5dp" 
     android:contentDescription="@string/checkbox_content_description" 
     android:src="@drawable/checkbox_unchecked" 
     android:background="@layout/transparent_background" 
     android:focusableInTouchMode="false" 
     android:adjustViewBounds="true" 
     android:clickable="false" 
     android:focusable="false" /> 
    <TextView 
     android:id="@+id/tv_amount" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_margin="5dp" 
     android:focusableInTouchMode="false" 
     android:clickable="false" 
     android:focusable="false" 
     android:textIsSelectable="false" /> 


    <LinearLayout 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:gravity="center_vertical"> 
    <TextView 
     android:id="@+id/tv_product_name" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:singleLine="true" 
     android:ellipsize="end" 
     android:layout_margin="5dp" 
     android:focusableInTouchMode="false" 
     android:clickable="false" 
     android:focusable="false" 
     android:textIsSelectable="false" 
     android:background="@layout/border" /> 
    </LinearLayout> 

    <TextView 
     android:id="@id/tv_price" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_margin="5dp" 
     android:focusableInTouchMode="false" 
     android:clickable="false" 
     android:focusable="false" 
     android:textIsSelectable="false" /> 

</LinearLayout> 
+0

非常感謝,在將LinearLayout的'gravity'改爲'center_vertical'而不是'center'後,它的工作原理與我想要的完全一樣。接受爲答案。 –

+0

好的,我編輯我的答案... –

0

我僅僅指剛編輯了一個XML。嘗試用這種

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/item_layout" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal"> 
    <TextView android:id="@+id/floraCompStat" 
      android:layout_width="wrap_content" 
      android:layout_height="fill_parent" 
      android:layout_alignBottom="@+id/image" 
      android:background="@drawable/bg" 
      android:gravity="center_vertical" 
      android:text="TextView" /> 

bg.xml

<?xml version="1.0" encoding="utf-8"?> 
    <shape xmlns:android="http://schemas.android.com/apk/res/android" 
     android:shape="rectangle" 
     > 
     <solid android:color="#FFFFFF"/> 
     <stroke android:width="1sp" android:color="#FF0000" /> 
     <padding android:left="15dp"/> 
    </shape> 
相關問題