如何在没有imageview的情况下对齐文本?

问题描述:

我有下面的XML(list_row.xml)列表视图如何在没有imageview的情况下对齐文本?

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:background="@color/settings_list_item" 
    android:baselineAligned="false" 
    android:descendantFocusability="blocksDescendants" 
    android:orientation="horizontal" > 

    <TextView 
     android:id="@+id/txtItemName" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerVertical="true" 
     android:layout_marginLeft="10dp" 
     android:text="@string/settings_item_1" 
     android:textAppearance="?android:attr/textAppearanceMedium" 
     android:textColor="#000000" /> 

    <TextView 
     android:id="@+id/txtSubItemName" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerVertical="true" 
     android:layout_toLeftOf="@+id/rightArrow" 
     android:text="rightItem" 
     android:textAppearance="?android:attr/textAppearanceMedium" 
     android:textColor="#000000" /> 

    <ImageView 
     android:id="@+id/rightArrow" 
     android:layout_width="50dip" 
     android:layout_height="50dip" 
     android:layout_alignParentRight="true" 
     android:layout_centerVertical="true" 
     android:contentDescription="@null" 
     android:src="@drawable/ic_arrow" /> 

</RelativeLayout> 

现在,这个显示rightItem>图像之前。但有时我不想显示右箭头,在这种情况下,如果我将其可见性设置为gone,那么我的Textview移动到左侧,实际上我想在完全右侧显示它。我怎样才能达到这个要求?

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:background="#dddd" 
    android:baselineAligned="false" 
    android:descendantFocusability="blocksDescendants" 
    android:gravity="center_vertical" 
    android:orientation="horizontal" > 

    <TextView 
     android:id="@+id/txtItemName" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_centerVertical="true" 
     android:layout_marginLeft="10dp" 
     android:layout_weight="1" 
     android:text="#000" 
     android:textAppearance="?android:attr/textAppearanceMedium" 
     android:textColor="#000000" /> 

    <TextView 
     android:id="@+id/txtSubItemName" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerVertical="true" 
     android:layout_toLeftOf="@+id/rightArrow" 
     android:text="rightItem" 
     android:textAppearance="?android:attr/textAppearanceMedium" 
     android:textColor="#000000" /> 

    <ImageView 
     android:id="@+id/rightArrow" 
     android:layout_width="50dip" 
     android:layout_height="50dip" 
     android:layout_alignParentRight="true" 
     android:layout_centerVertical="true" 
     android:contentDescription="@null" 
     android:src="@drawable/ic_launcher" /> 

</LinearLayout> 
+0

你正在** LinearLayout中使用** RelativeLayout特定的**属性... ???请参阅:http:// www .tutorialspoint.com/android/android_relative_layout.htm –

+0

这将显示在lint警告和其余的东西取决于user2060383。user2060383应该用他/她的大脑来克服这些小问题 –

+0

...“小问题”。你是否直接写出正确的答案?新用户可能会感到困惑。 –

您已尝试过GONE。你试过INVISIBLE

.setVisibility(View.INVISIBLE); 

我明白了。

<TextView 
     android:id="@+id/txtSubItemName" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerVertical="true" 
     android:layout_toLeftOf="@+id/rightArrow" 
     android:gravity="right" <!-- ADD THIS --> 
     android:text="rightItem" 
     android:textAppearance="?android:attr/textAppearanceMedium" 
     android:textColor="#000000" /> 

所以加:android:gravity="right"

+0

,但它不设置文本右对齐。我想在箭头不可见的情况下将文本右对齐。 – user2060383

+0

@ user2060383答案已编辑。 –

+0

没有,它没有工作,结果相同:( – user2060383

与相对布局另一个答案是:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:background="#dddd" 
    android:baselineAligned="false" 
    android:descendantFocusability="blocksDescendants" 
    android:orientation="horizontal" > 

    <TextView 
     android:id="@+id/txtItemName" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerVertical="true" 
     android:layout_marginLeft="10dp" 
     android:text="#000" 
     android:textAppearance="?android:attr/textAppearanceMedium" 
     android:textColor="#000000" /> 

    <ImageView 
     android:id="@+id/rightArrow" 
     android:layout_width="50dip" 
     android:layout_height="50dip" 
     android:layout_alignParentRight="true" 
     android:contentDescription="@null" 
     android:src="@drawable/ic_launcher" /> 

    <TextView 
     android:id="@+id/txtSubItemName" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignWithParentIfMissing="true" 
     android:layout_centerVertical="true" 
     android:layout_toLeftOf="@+id/rightArrow" 
     android:text="rightItem" 
     android:textAppearance="?android:attr/textAppearanceMedium" 
     android:textColor="#000000" /> 

</RelativeLayout> 
在这种情况下,它只会隐藏箭头图像