ImageView ("headbar") разные экраны и т. Д. - PullRequest
0 голосов
/ 11 августа 2011

Я просто хочу сделать ImageView в качестве моей головной панели ... он должен просто заполнить его родительский линейный макет .. очевидно, это не так.

есть ли способ указать scaleType, чтобы он просто соответствовалего родительский макет?(лучшее решение в XML) я видел, что это было решение для программирования, в котором для scaleType установлено значение «fill» ... но, похоже, нет соответствующего xml-атрибута, или я его не видел?

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content">
    <LinearLayout
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        android:layout_weight="1"
        android:id="@+id/linearlayoutmain">
    <ImageView
         android:layout_marginTop="0dp" 
         android:src="@drawable/headbar" 
         android:id="@+id/mainheadbar" 
         android:scaleType="fitStart"
         android:paddingTop="0dp"
         android:layout_height="fill_parent" 
         android:layout_width="fill_parent" 
        />
    </LinearLayout>
    <LinearLayout 
        android:layout_height="fill_parent"
        android:layout_width="fill_parent"
        android:layout_weight="7"
        android:layout_below="@id/linearlayoutmain">
    </LinearLayout>
</RelativeLayout>

какие-либо мысли / решения по этому поводу?Я подумал, что мне не нужно беспокоиться о соотношении сторон, потому что я все исправил ... так что не стоит возражать.

edit: кажется, работает лучше, когда я использую ImageBUtton вместо imageview... однако у меня возникли проблемы на экранах меньшего размера ... они, похоже, не возражают против моей 9-й патчи ... lol

1 Ответ

1 голос
/ 11 августа 2011

Вам нужно использовать три типа макетов в целом

  1. макет ИПЧР

  2. раскладка-MDPI

  3. раскладка-ldpi

Также вам нужно использовать три макета значений в целом

  1. Значения-ИПЧР

  2. Значения-MDPI

  3. Значения-ldpi

Здесь я объясняю для заголовка устройства LDPI, что вам нужно сделать для всех устройств HDPI, MDPI и т. Д.

Например, простой xml с изображением в качестве заголовка: layout-ldpi - Header

<?xml version="1.0" encoding="UTF-8"?>
  <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
            android:layout_width="fill_parent"  android:layout_height="50px"
            android:orientation="horizontal" >

  <ImageView    android:id="@+id/header_main_title" android:layout_marginTop="10dip"
                android:layout_width="wrap_content" android:layout_height="50dip" 
                android:background="@drawable/header_image" 
                android:layout_centerHorizontal="true" android:layout_marginRight="10dip" 
                 />

Аналогично значения-ldpi содержат

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

  <resources>
     <style name="MyTheme" parent="android:Theme">
        <item name="android:windowTitleSize">50px</item>
      <item name="android:windowTitleBackgroundStyle">@style/WindowTitleBackground
       </item>      
     </style>
   </resources>

Аналогично для Styles.xml:

<?xml version="1.0" encoding="UTF-8"?>
<resources>
<style name="WindowTitleBackground" parent="android:WindowTitleBackground">
    <item name="android:background">@android:color/transparent</item>
</style>

В вашем Manifest.xml включите эту строку:

<application android:icon="@drawable/vmi_icon" android:label="@string/app_name"  android:theme="@style/MyTheme" >

Поместите Styles.xml и Themes.xml в папку values-ldpi

Я показал заголовок для устройства ldpi аналогично, который нужно создать для MDPI и HDPI устройства

изменения должны быть сделаны в этой строке всех

если это HDPI:

<item name="android:windowTitleSize">100px</item>

Если это Mdpi:

<item name="android:windowTitleSize">70px</item>

Аналогично для header.xml:

если это HDPI:

android:layout_height="100px"

Если это Mdpi:

android:layout_height="70px"

Дайте мне знать, если вам нужны дальнейшие разъяснения. Спасибо Вэнки.

...