проблема с макетом андроида - PullRequest
0 голосов
/ 11 сентября 2011

У меня есть следующий макет для пользовательской строки заголовка. Однако проблема в следующем: и imageview, и imagebutton идут в центре. Я ожидал, что imagebutton будет в крайнем правом положении. Может ли кто-нибудь любезно сообщить мне, что я здесь не так сделал? Спасибо.

            <?xml version="1.0" encoding="utf-8"?>
            <LinearLayout
                xmlns:android="http://schemas.android.com/apk/res/android"
                android:orientation="vertical"
                android:layout_width="fill_parent"
                android:layout_height="35dip"
                android:gravity="center_vertical"
                android:paddingLeft="5dip"
                android:background="#323331">

                <ImageView 
                android:src="@drawable/header" 
                android:id="@+id/header" 
                android:layout_height="wrap_content" 
                android:layout_width="fill_parent"
                android:gravity="center_horizontal">
                </ImageView>


                <ImageButton
                android:id="@+id/saveButton"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:src="@drawable/savetap"
                android:background="@null"
                android:gravity="right"
                android:layout_above="@+id/header">
                </ImageButton>

            </LinearLayout>

Ответы [ 3 ]

1 голос
/ 11 сентября 2011

Ваша компоновка имеет высоту всего 35 dip, поэтому, если вы покажете свой ImageView, вы будете нажимать на изображение, кнопка ImageButton будет расположена за пределами экрана.Попробуйте изменить layout_height на wrap_content, если хотите.

0 голосов
/ 11 сентября 2011

Сначала, если ширина установлена ​​для заполнения родительского элемента, она действительно заполняет родительский элемент, поэтому она использует всю ширину.Второе: почему не RelativeLayout?Это предоставляет больше возможностей и контроля.Может быть, это то, что вы ищете: `

<?xml version="1.0" encoding="utf-8"?>

    <RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="35dip"
        android:gravity="center_vertical"
        android:paddingLeft="5dip"
        android:background="#323331">

        <ImageView 
            android:src="@drawable/header" 
            android:id="@+id/header" 
            android:layout_height="wrap_content" 
            android:layout_width="wrap_content"
            android:layout_gravity="left">
        </ImageView>


        <ImageButton
            android:id="@+id/saveButton"
            android:layout_height="wrap_content"
            android:src="@drawable/savetap"
            android:background="@null" 
            android:layout_marginLeft="20dp"
            android:layout_width="wrap_content" android:layout_alignParentRight="true">
        </ImageButton>

    </RelativeLayout>

`

0 голосов
/ 11 сентября 2011

Вы используете вертикально ориентированную LinearLayout, все View будут представлены в вертикальной манере. Используйте RelativeLayout, чтобы у вас был больший контроль над положением представлений. Если вы все еще хотите использовать LinearLayout, вам придется использовать горизонтальную ориентацию, чтобы представления могли находиться на одной и той же «линии».

Используйте layout_gravity для размещения элемента справа, просто gravity используется содержимым представления.

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