Относительное расположение простых позиций - PullRequest
0 голосов
/ 03 ноября 2011

Хорошо, у меня есть относительное расположение внутри линейного. До сих пор относительное расположение было идеальным, однако теперь появилась большая проблема.

Относительное расположение основано на положении другого элемента. Например, кнопка button2 находится внизу кнопки button1 и т. Д., А если кнопка 1 исчезает, то button2 становится ... "орехом".

Это моя проблема, когда кнопка исчезает, одна из 4 кнопок поднимается ... вверх. Мне нужно расположить кнопки так:

Кнопка 1 и кнопка 2 в середине экрана, а 3 и 4 ниже, но не совсем внизу. Я пытался изменить его в относительной компоновке, но мне не удалось ... Надеюсь, вы можете мне помочь. Вот код:

<?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout android:id="@+id/relativeLayout1" android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android">
        <TextView 
        android:textAppearance="?android:attr/textAppearanceLarge" 
        android:id="@+id/textView2" 
        android:text="TextView" 
        android:layout_height="wrap_content" 
        android:layout_width="wrap_content" 
        android:layout_alignParentTop="true" 
        android:layout_alignParentLeft="true">
        </TextView>
        <Button 
        android:textSize="20dp" 
        android:layout_height="wrap_content" 
        android:id="@+id/button3" 
        android:text="Button" 
        android:layout_width="wrap_content"  
        android:layout_alignParentLeft="true" 
        android:layout_marginBottom="27dp" 
        android:layout_alignParentBottom="true">
        </Button>
        <TextView 
        android:layout_height="wrap_content" 
        android:id="@+id/textView1" 
        android:textAppearance="?android:attr/textAppearanceLarge" 
        android:layout_width="wrap_content" 
        android:text="TextView" 
        android:layout_above="@+id/button1" 
        android:layout_centerHorizontal="true" 
        android:layout_marginBottom="74dp">
        </TextView>
        <Button 
        android:textSize="20dp" 
        android:layout_height="wrap_content" 
        android:id="@+id/button2" 
        android:text="Button" 
        android:layout_width="wrap_content" 
        android:layout_alignBaseline="@+id/button1" 
        android:layout_alignBottom="@+id/button1" 
        android:layout_alignParentRight="true">
        </Button>
        <Button 
        android:textSize="20dp" 
        android:layout_height="wrap_content" 
        android:id="@+id/button1" 
        android:paddingRight="30dp" 
        android:paddingBottom="90px" 
        android:text="Button" 
        android:padding="10dp" 
        android:layout_width="wrap_content" 
        android:layout_centerVertical="true" 
        android:layout_alignRight="@+id/button3">
        </Button>
        <Button 
        android:textSize="20dp" 
        android:layout_height="wrap_content" 
        android:gravity="bottom" 
        android:id="@+id/button4" 
        android:text="Button" 
        android:layout_width="wrap_content" 
        android:layout_alignBaseline="@+id/button3" 
        android:layout_alignBottom="@+id/button3" 
        android:layout_alignParentRight="true">
        </Button>
    </RelativeLayout>

Вот код, который я использую, чтобы сделать кнопку невидимой:

        Button b1 = (Button) findViewById(R.id.button1);
        Button b2 = (Button) findViewById(R.id.button2);
        Button b3 = (Button) findViewById(R.id.button3);
        Button b4 = (Button) findViewById(R.id.button4);
        b1.setVisibility(View.GONE);

Ответы [ 2 ]

3 голосов
/ 03 ноября 2011

если вы используете view.setVisibility(View.GONE) .. тогда попробуйте View.INVISIBLE здесь вид = (ваш текстовый просмотр, кнопка что-нибудь)

1 голос
/ 03 ноября 2011

Попробуйте улучшить свои правила размещения, используя:

    android:layout_toRightOf="component_id"
    android:layout_toLeftOf="component_id"
    android:layout_above="component_id"
    android:layout_below="component_id"

Или попробуйте поставить кнопки в Table Layout ... Как-то так

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:layout_gravity="center"
android:padding="15dip">
<LinearLayout android:orientation="vertical"
    android:layout_height="wrap_content" android:layout_width="fill_parent"
    android:layout_gravity="center" android:paddingLeft="20dip"
    android:paddingRight="20dip">
    <TableLayout android:layout_height="wrap_content"
        android:layout_width="wrap_content" android:layout_gravity="center"
        android:stretchColumns="*">
        <TableRow android:paddingBottom="250dip">
            <Button android:id="@+id/edt1"
            android:layout_gravity="left" 
            android:text="Button1" 
            />

            <Button android:id="@+id/edt2" 
            android:layout_gravity="right"
            android:text="Button2"
            />
        </TableRow>

        <TableRow> 
            <Button android:id="@+id/edt3"
            android:layout_gravity="left" 
            android:text="Button3"
            />
            <Button android:id="@+id/edt4"
            android:layout_gravity="right" 
            android:text="Button4"
            />
        </TableRow>

    </TableLayout>
</LinearLayout>

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

...