为什么要裁剪按钮?

时间:2013-10-05 10:14:47

标签: android android-layout android-linearlayout relativelayout

我使用以下布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:orientation="vertical" >
    <TextView
        android:id="@+id/dialog_text"
        android:layout_width="250dp"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_margin="10dp"
        android:text="@string/dialog_title" />
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/dialog_text"
        android:layout_alignRight="@+id/dialog_text"
        android:layout_below="@+id/dialog_text"
        android:layout_marginTop="10dp" >
        <Button
            android:id="@+id/dialog_btn_yes"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginBottom="20dp"
            android:layout_weight="1"
            android:text="@string/yes" />
        <Button
            android:id="@+id/dialog_btn_no"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginBottom="20dp"
            android:layout_weight="1"
            android:text="@string/no" />
    </LinearLayout>
</RelativeLayout>

并应用以下样式:

<activity
    android:name="my.package.DialogActivity"
    android:configChanges="keyboardHidden|orientation"
    android:label="@string/dialog_title"
    android:theme="@android:style/Theme.Dialog" >
</activity>

在某些情况下(取决于dialog_text长度?),按钮会被裁剪。

是什么原因?怎么可能修好?

3 个答案:

答案 0 :(得分:2)

<RelativeLayout>中,文字行会增加裁剪下方的按钮。最近我也遇到了这个问题。作为TextView中的<RelativeLayout>。在TextView中写<LinearLayout>或设置文本行数。这样按钮大小不会裁剪。

在活动类的onCreate()方法中尝试此操作 -

WindowManager.LayoutParams params = getWindow().getAttributes();  
params.x = -20;  
params.height = 100;  
params.width = 550;  
params.y = -10;  

this.getWindow().setAttributes(params);

您可以根据需要设置高度宽度。

答案 1 :(得分:1)

请勿为按钮设置底部边距。

答案 2 :(得分:1)

// try this
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:gravity="center"
              android:orientation="vertical" >
    <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="0dp"
            android:layout_marginTop="10dp"
            android:layout_weight="1">
        <TextView
                android:id="@+id/dialog_text"
                android:layout_width="250dp"
                android:layout_height="wrap_content"
                android:scrollbars="vertical"
                android:text="@string/dialog_title" />
    </LinearLayout>
    <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp" >
        <Button
                android:id="@+id/dialog_btn_yes"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="@string/yes" />
        <Button
                android:id="@+id/dialog_btn_no"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="@string/no" />
    </LinearLayout>
</LinearLayout>