将TableLayout中的单元格内容与右侧对齐

时间:2016-02-29 18:08:19

标签: java android

我对android开发相对较新。我有一个TableLayout活动。活动的构建如下图所示。

Activity

我希望两个较小的按钮位于右侧,这样两个EditTexts都可以使用完整的剩余宽度。我也尝试设置" android:gravity"像一些帖子建议,但没有任何影响。我该如何完成?

此外,我有2个tableRows用于两行,包含info,text&按钮。 活动的其余部分超出任何tableRow以获得全宽度。 这是常用还是坏编程?如果是这样,那么更好的方式是什么?

<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">


    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="@string/strInputInfo"
        android:id="@+id/lblHexToRGB"
        android:layout_column="1" />


    <EditText
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/txtHexInput"
        android:layout_column="1"
        android:textCursorDrawable="@null"
        android:hint="@string/strHexInputHint" />

    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/strConvertButtonText"
        android:id="@+id/cmdConvertCode"
        android:layout_column="1"/>

<TableRow
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:text="@string/strRGBInfo"
            android:id="@+id/lblRGBInfo"
            android:layout_column="0" />

    <EditText
            android:layout_width="350px"
            android:layout_height="wrap_content"
            android:id="@+id/txtOutputRGB"
            android:textCursorDrawable="@null"
            android:layout_column="1"
        android:textAlignment="center"/>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/strButtonCopyText"
        android:id="@+id/cmdCopyRGBToClipboard"
        android:layout_column="2"
        android:layout_gravity="right"/>
</TableRow>


<TableRow
    android:layout_width="wrap_content"
    android:layout_height="match_parent">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="@string/strHexInfo"
        android:id="@+id/lblHexInfo"
        android:layout_column="0"/>

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/txtOutputHex"
        android:layout_column="1"
        android:textAlignment="center"/>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/strButtonCopyText"
        android:id="@+id/cmdCopyHexToClipboard"
        android:layout_column="2"/>
</TableRow>


<ImageView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:id="@+id/imageView"
            android:layout_column="1"
            android:maxHeight="100dp"
            android:minHeight="100dp" />
</TableLayout>

2 个答案:

答案 0 :(得分:1)

尝试将tablerow设置为fill_parent,然后您可以使用 android:layout_gravity =“right”

<TableRow
    android:layout_width="fill_parent"
    android:layout_height="match_parent">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="@string/strHexInfo"
        android:id="@+id/lblHexInfo"
        android:layout_column="0"/>

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/txtOutputHex"
        android:layout_column="1"
        android:textAlignment="center"/>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/strButtonCopyText"
        android:id="@+id/cmdCopyHexToClipboard"
        android:layout_gravity="right"
        android:layout_column="2"/>
</TableRow>

答案 1 :(得分:1)

TableRow布局与LinearLayout完全相同(事实上,它是LinearLayout的子类),因此您可以使用LinearLayout中的layout_weight属性来允许行中的视图扩展以填充与其他视图相关的空间。它的行。

例如,您的EditText可能是:

<EditText
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:id="@+id/txtOutputRGB"
        android:textCursorDrawable="@null"
        android:layout_column="1"
        android:textAlignment="center"/>

请注意,宽度为0,权重为1.当行中的其他视图的权重为0(默认值)时,这告诉TableRow为EditText分配尽可能多的空间,而其他视图获得渲染所需的最小空间。