Android: панель с центрированным изображением и кнопками справа - PullRequest
1 голос
/ 03 сентября 2010

Я действительно борюсь с частью макета в моем приложении. У меня есть строка заголовка с центрированным изображением, а справа должны быть две кнопки (или изображения, которые можно нажимать, как у меня сейчас) Мне удалось получить изображения рядом друг с другом (все по центру), но я хочу, чтобы изображения были справа. Когда я использую layout_weight, чтобы сделать первый растяжку, кнопки справа, но они становятся такими маленькими. Я хочу, чтобы кнопки (изображения) сохранили свои оригинальные размеры. Я даже пытался жестко закодировать это с помощью minWidth и minHeight, но это не сработало.

Вот код, который центрирует все:

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:background="@drawable/header_tile">

    <ImageView
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:src="@drawable/header_logo">
    </ImageView>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

        <ImageView
           android:id="@+id/previous"
           android:src="@drawable/omhoog"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content">
        </ImageView>

        <ImageView
           android:id="@+id/next"
           android:src="@drawable/omlaag"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content">
        </ImageView>
    </LinearLayout>
</LinearLayout>

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

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:background="@drawable/header_tile">

    <ImageView
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:src="@drawable/header_logo"
        android:layout_weight="2">
    </ImageView>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1">

        <ImageView
           android:id="@+id/previous"
           android:src="@drawable/omhoog"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content">
        </ImageView>

        <ImageView
           android:id="@+id/next"
           android:src="@drawable/omlaag"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content">
        </ImageView>
    </LinearLayout>
</LinearLayout>

Есть идеи? Большое спасибо!

Erik

Ответы [ 3 ]

1 голос
/ 03 сентября 2010

Используйте относительное расположение, оно гораздо мощнее, обратите внимание на атрибуты layout_centerInParent и layout_alignParentRight:

<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/header_tile">
    <ImageView
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:src="@drawable/header_logo"
        android:layout_centerInParent="true">
    </ImageView>
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true">
        <ImageView
           android:id="@+id/previous"
           android:src="@drawable/omhoog"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content">
        </ImageView>
        <ImageView
           android:id="@+id/next"
           android:src="@drawable/omlaag"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content">
        </ImageView>
    </LinearLayout>
</RelativeLayout>
0 голосов
/ 03 сентября 2010

XMLNS: андроид = "http://schemas.android.com/apk/res/android">

<LinearLayout android:id="@+id/LinearLayout01"
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:layout_weight="1" 
            android:gravity="center">
     <Button android:text="@+id/Button03"
         android:id="@+id/Button03" 
         android:layout_height="wrap_content"
          android:layout_weight="0" 
          android:layout_width="wrap_content">
    </Button>
</LinearLayout>

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

Не знаю размер ваших изображений, поэтому я использовал кнопки. Может ли значение веса быть 2? 0 или 1 я всегда использую.

0 голосов
/ 03 сентября 2010

layout_weight работает иначе, если используется с fill_parent & wrap_content;

  • wrap_content: он пытается расширить элементы в соотношении весов, чтобы охватить все пространство

  • fill_parent: он пытается сжать элементы в соотношении весов.

При использовании весов все виды должны иметь одинаковый тип (fill_parent / wrap_content)

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