2014-02-24 3 views
1

У меня есть небольшая проблема с моим меню. У меня есть 3 текстовых поля, охватывающих всю ширину устройства. Каждый текст должен содержать текст и изображение выше.Android textview drawabletop alignment

Проблемы: Изображение всегда показывает на границе моего TextView под TextView открытое пространство добавляется (если удалить изображение, ниже пространство переборщили)

1

Я хочу значок и текст, который будет выровнен в центре моего текста как «1».

Текущий частичный код: (значок добавляется вне XML так не видно в этом коде, и я удалил некоторый код, который не имеет ничего общего с этой частью)

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="@color/backgroundBlue" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context=".MainActivity" > 

<LinearLayout 
    android:id="@+id/llMenu" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:orientation="horizontal" > 

    <com.olbrecht.thescienceofwinning.SquareTextView 
     android:id="@+id/menu_ebook" 
     android:text="@string/menu_ebook" 
     android:textColor="@color/white" 
     android:layout_width="0dp" 
     android:layout_height ="fill_parent" 
     android:layout_weight="1" 
     android:gravity="center_vertical|center_horizontal" 
     android:background="@color/menuBlue" /> 

    <com.olbrecht.thescienceofwinning.SquareTextView 
     android:id="@+id/menu_library" 
     android:text="@string/menu_library" 
     android:textColor="@color/white" 
     android:layout_width="0dp" 
     android:layout_height ="fill_parent" 
     android:layout_weight="1" 
     android:gravity="center_vertical|center_horizontal" 
     android:background="@color/menuBlue" 
     android:layout_marginLeft="2dp" 
     android:layout_marginRight="2dp" /> 

    <com.olbrecht.thescienceofwinning.SquareTextView 
     android:id="@+id/menu_faq" 
     android:text="@string/menu_faq" 
     android:textColor="@color/white" 
     android:layout_width="0dp" 
     android:layout_height ="fill_parent" 
     android:layout_weight="1" 
     android:gravity="center_vertical|center_horizontal" 
     android:background="@color/menuBlue" /> 

</LinearLayout> 

</RelativeLayout> 

Примечание: Размер моего textview различается на каждом устройстве, в зависимости от ширины высота выравнивается по ширине, делая квадрат.

+0

поэтому не использовать «drawableTop», просто использовать " background " – pskink

+0

Фоновый рисунок сделает значок шириной/высотой текста и поместит его текст поверх него? + удаление цвета фона? – ZackWhite

+0

Если вы не хотите автоматически заполнять оси x и y, используйте атрибут гравитации BirmapDrawable, вы можете использовать rhis. Можно использовать вместе с любым другим, помещающим их в LayerDrawable – pskink

ответ

1

решаемый путем изменения android:gravity="center_horizontal" и добавления android:layout_gravity="bottom"

и добавив следующий код для создания иконки и вычисления высоты для определения верхней стороной отступов:

TextView tv_ebook = (TextView)findViewById(R.id.menu_ebook); 
tv_ebook.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.ebook_icon, 0, 0); 
BitmapDrawable bd_ebook=(BitmapDrawable) this.getResources().getDrawable(R.drawable.ebook_icon); 
int h_ebook = bd_ebook.getBitmap().getHeight(); 
tv_ebook.setPadding(0, h_ebook, 0, 0); 
+0

, это настолько взломанно, но хорошо, ваше решение – pskink