2016-02-29 183 views
0

我对android开发比较陌生。我有一个TableLayout的活动。该活动的构建如下图所示。将TableLayout中的单元格内容对齐到右边

Activity

我希望两个小按钮在右边,这样既EditTexts可以使用完整的剩余宽度。我也试图设置“android:引力”像一些职位建议,但没有任何影响。我怎么做到这一点?

此外,我有两个tableRows两个行的信息,文本&按钮。 活动的其余部分不在任何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> 

回答

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,而其他视图获得最少的渲染空间。

+0

太棒了!这对我很有用,谢谢! – Marcel

1

尝试将tablerow的到FILL_PARENT,然后你可以使用机器人:layout_gravity = “右”

​​
+0

已经尝试过,这并没有改变任何东西。 – Marcel

+0

@Marcel是的,我看到你提到过,但是你现在的TableRow layout_width设置为fill_parent。我建议改变这一点,或者你可以尝试Doug_Stevenson的选择,这也是一个很好的解决方案。 – basic

相关问题