TableView中按钮的右侧半径边缘被切断

时间:2011-06-15 06:55:25

标签: android android-layout

我有一个带有自定义背景drawable的按钮,它有圆角。看起来很正常,但当它出现在TableLayout时,按钮的右手边缘会被切断。

这是布局XML的相关片段,它将按钮放在表格布局中:

    <TableLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@drawable/rounded_box_nopadding" android:stretchColumns="1" android:shrinkColumns="1">
        <TableRow android:padding="10dp">
            <TextView android:text="@string/sign_in_email_label" android:textStyle="bold" android:textColor="#000000" android:paddingRight="10dp" />
            <TextView android:text="@string/sign_in_email_hint" />
        </TableRow>
        <TableRow android:layout_height="1dp">
            <View android:layout_width="fill_parent" android:layout_height="1dp" android:background="#dbe3e4" android:layout_span="2" />
        </TableRow>
        <TableRow android:padding="10dp">
            <TextView android:text="@string/sign_in_password_label" android:textStyle="bold" android:textColor="#000000" android:paddingRight="10dp" />
            <TextView android:text="@string/sign_in_password_hint" />
        </TableRow>
        <TableRow android:layout_height="1dp">
            <View android:layout_width="fill_parent" android:layout_height="1dp" android:background="#dbe3e4" android:layout_span="2" />
        </TableRow>
        <TableRow android:padding="10dp">
            <Button android:id="@+id/my_scoopons_sign_in_button" android:layout_height="wrap_content" android:text="@string/sign_in_button_label" android:textColor="@color/button_text_states" 
                android:textSize="20sp" android:textStyle="bold" android:shadowColor="#671610" android:shadowDy="-2" android:shadowRadius="1" android:background="@drawable/button_states"
                android:layout_span="2"/>
            </TableRow>
    </TableLayout>

这是一个说明问题的屏幕截图。

Android screenshot http://www.petrocky.com/images/device.png

3 个答案:

答案 0 :(得分:1)

我已设法通过删除<TableRow>元素的填充并向<Button>添加边距来解决此问题;即:

<TableRow>
    <Button android:id="@+id/sign_in_button" android:layout_height="wrap_content" android:text="@string/sign_in_button_label"  
        android:background="@drawable/button_states"
        android:layout_span="2" android:layout_margin="10dp" />
</TableRow>

由于按钮位于表格内,因此宽度为fill_parent。计算父单元格的宽度以包括填充,但在渲染时它显得太长。通过在按钮上使用边距,问题就解决了。

答案 1 :(得分:0)

该按钮代码中缺少android:layout_width。可能是原因。

答案 2 :(得分:0)

问题出在按钮layout_span中,也没有按钮的宽度

您必须设置android:layout_height="wrap_content",我认为删除android:layout_span="2" 我修改了你的代码。

嗨米克,

尝试使用以下代码。

    <TableLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@drawable/rounded_box_nopadding" android:stretchColumns="1" android:shrinkColumns="1">
    <TableRow android:padding="10dp">
        <TextView android:text="@string/sign_in_email_label" android:textStyle="bold" android:textColor="#000000" android:paddingRight="10dp" />
        <TextView android:text="@string/sign_in_email_hint" />
    </TableRow>
    <TableRow android:layout_height="1dp">
        <View android:layout_width="fill_parent" android:layout_height="1dp" android:background="#dbe3e4" android:layout_span="2" />
    </TableRow>
    <TableRow android:padding="10dp">
        <TextView android:text="@string/sign_in_password_label" android:textStyle="bold" android:textColor="#000000" android:paddingRight="10dp" />
        <TextView android:text="@string/sign_in_password_hint" />
    </TableRow>
    <TableRow android:layout_height="1dp">
        <View android:layout_width="fill_parent" android:layout_height="1dp" android:background="#dbe3e4" android:layout_span="2" />
    </TableRow>
    <TableRow android:padding="10dp">
        <Button android:id="@+id/my_scoopons_sign_in_button" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="@string/sign_in_button_label" android:textColor="@color/button_text_states" 
            android:textSize="20sp" android:textStyle="bold" android:shadowColor="#671610" android:shadowDy="-2" android:shadowRadius="1" android:background="@drawable/button_states"
            />
        </TableRow>
</TableLayout>

由于 迪帕克