1

https://docs.google.com/document/d/1SDDnAG-jkQjC6F85iPgfv3Et1pYl8t03k-TkCN3YcCw/edit


我有一个包含库存和自定义列表项的 Android 首选项页面。自定义列表项“Mood”和“Mixed Mood”可以在引用的 Google Doc 的屏幕截图中看到,并以下列方式起作用。(外部链接是因为,没有至少 10 的声誉,我不允许在 stackoverflow 中发布图像......)

1)在用户选择一个值之前,他们只是显示他们的标题。(情绪或混合情绪)

2)用户选择了一个值后,他们会显示他们的标题和一个自定义工具提示(小彩色方块),表明他们的选择。

问题:您可以从屏幕截图中看到,在用户选择一个值之前,“心情”文本没有居中。我希望它居中,然后在做出选择后动态地为自定义工具提示腾出空间。换句话说,我想

<TextView android:id="@+android:id/title" 

回应

android:gravity="center_vertical". 

这可能吗?

我的布局文件看起来像这样。


<?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:minHeight="60dip"
    android:gravity="center_vertical"
    android:paddingRight="?android:attr/scrollbarSize">

    <RelativeLayout 
         android:layout_width="fill_parent" 
         android:layout_height="wrap_content" 
         android:gravity="center_vertical" 
         android:layout_marginLeft="15dip" 
         android:layout_marginRight="6dip"> 

        <TextView android:id="@+android:id/title"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:gravity="center_vertical"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:textSize="18sp"/>
        <!-- This image represents the dropdown arrow -->
        <ImageView
            android:gravity="center_vertical"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_toRightOf="@android:id/title"
            android:scaleType="fitEnd"
            android:src="@drawable/ic_btn_round_more_normal_cropped" />

        <monarca_rct.client.customcomponents.MoodScalePresentation
            android:id="@+android:id/hpmp_mood_scale"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@android:id/title"
            android:paddingTop="4.0dp"/>

    </RelativeLayout>

</LinearLayout>
4

2 回答 2

0

如果我的问题是正确的:

您可以android:layout_alignWithParentIfMissing="true"访问http://developer.android.com/resources/articles/layout-tricks-efficiency.html<TextView android:id="@+android:id/title"了解更多信息

于 2012-05-07T19:44:00.650 回答
0

我不能完全尝试这个,但我认为它可能是这样的:

<?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:minHeight="60dip"
    //REMOVED GRAVITY
    android:paddingRight="?android:attr/scrollbarSize">

    <RelativeLayout 
         android:layout_width="fill_parent" 
         android:layout_height="wrap_content" 
         //REMOVED GRAVITY
         android:layout_marginLeft="15dip" 
         android:layout_marginRight="6dip"> 

        <TextView android:id="@+android:id/title"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:gravity="center_vertical|left"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:textSize="18sp"/>
        <!-- This image represents the dropdown arrow -->
        <ImageView
            android:gravity="center_vertical"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_toRightOf="@android:id/title"
            android:scaleType="fitEnd"
            android:src="@drawable/ic_btn_round_more_normal_cropped" />

        <monarca_rct.client.customcomponents.MoodScalePresentation
            android:id="@+android:id/hpmp_mood_scale"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@android:id/title"
            android:paddingTop="4.0dp"/>

    </RelativeLayout>

</LinearLayout>

center_verticalcenter_vertical|left的原因是因为你的父布局就像一个网格,你可以“选择”你的位置。因此,如果您有:

(1) (2) (3)

(4) (5) (6)

(7) (8) (9)

[不要介意每行之间的空格,由于某种原因,如果我不这样做,它会全部显示在一行中。]

4是你想要你的文本的地方。如您所见,4 在左侧,但也垂直居中,因此组合:

 android:gravity="center_vertical|left"

快速提问,为什么需要在 LinearLayout 中使用 RelativeLayout?从外观上看,您可以完全不使用 LinearLayout。

于 2013-12-18T15:44:56.063 回答