Высота RelativeLayout 'wrap_content' не переносит содержимое - PullRequest
0 голосов
/ 24 декабря 2011

Я делаю макет для копирования пользовательского диалога.Для нижней части моего диалога RelativeLayout, на котором размещены положительные, нейтральные и отрицательные кнопки, имеет увеличенную высоту, хотя я установил wrap_content высоту на *1003*.

Мой XML-макет ниже:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/linearLayout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<RelativeLayout
    android:id="@+id/relativeLayout1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

    <TextView
        android:id="@+id/TextView_Title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="5dip"
        android:text="Title"
        android:textAppearance="?android:attr/textAppearanceLarge" />
</RelativeLayout>

<LinearLayout
    android:id="@+id/linearLayout3"
    android:layout_width="match_parent"
    android:layout_height="1dip"
    android:layout_marginBottom="10dip"
    android:layout_marginLeft="0dip"
    android:layout_marginRight="0dip"
    android:layout_marginTop="10dip"
    android:background="@android:drawable/divider_horizontal_dim_dark" >
</LinearLayout>

<TextView
    android:id="@+id/TextView_Message"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginBottom="10dip"
    android:layout_marginLeft="10dip"
    android:layout_marginRight="10dip"
    android:text="TextView" />

<RelativeLayout
    android:id="@+id/relativeLayout2"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@android:drawable/bottom_bar" >

    <Button
        android:id="@+id/Button_Positive"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toLeftOf="@+id/Button_Neutral"
        android:layout_centerVertical="true"
        android:text="Button" />

    <Button
        android:id="@+id/Button_Neutral"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="Button" />

    <Button
        android:id="@+id/Button_Negative"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@+id/Button_Neutral"
        android:layout_centerVertical="true"
        android:text="Button" />
</RelativeLayout>

Java Код активности:

public class MainActivity extends Activity
{
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        requestWindowFeature(Window.FEATURE_NO_TITLE);

        super.onCreate(savedInstanceState);
        setContentView(R.layout.dialog);

        // Assign content references
        TextView message = (TextView) findViewById(R.id.TextView_Message);
        message.setText("Are you sure you want to sign out?");
    }
}

1 Ответ

1 голос
/ 25 декабря 2011

У меня не было проблем с корректным отображением макета в Eclipse (как уже было сказано ранее) или на Motorola Defy MB525. Однако, если бы я установил тему действия на Theme.Dialog, он показывался сжатым по длине, в результате чего была видна только нейтральная кнопка. Есть также некоторые упрощения, которые вы можете сделать с макетом, как представлено в вашем вопросе, например, ненужное вложение заголовка TextView и (ab) с использованием LinearLayout для горизонтального разделителя.

Я изменил некоторые мелочи, приведя макет ниже. Возможно, вы можете попробовать?

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/root_layout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/TextView_Title"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="5dip"
        android:gravity="center_horizontal"
        android:text="Title"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <View
        android:id="@+id/horizontal_divider3"
        android:layout_width="fill_parent"
        android:layout_height="1dip"
        android:layout_marginBottom="10dip"
        android:layout_marginLeft="0dip"
        android:layout_marginRight="0dip"
        android:layout_marginTop="10dip"
        android:background="@android:drawable/divider_horizontal_bright" />

    <TextView
        android:id="@+id/TextView_Message"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="10dip"
        android:layout_marginLeft="10dip"
        android:layout_marginRight="10dip"
        android:text="TextView" />

    <LinearLayout
        android:id="@+id/button_layout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@android:drawable/bottom_bar" 
        android:gravity="center">

        <Button
            android:id="@+id/Button_Positive"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Button" />

        <Button
            android:id="@+id/Button_Neutral"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Button" />

        <Button
            android:id="@+id/Button_Negative"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Button" />
    </LinearLayout>

</LinearLayout>

Кстати, вместо использования действия для эмуляции диалога, вы также можете просто использовать этот макет для «реального» диалога. Есть хороший пример по созданию пользовательских диалогов на сайте разработчика Android.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...