2014-02-24 104 views
1

我的菜單有一個小問題。我有3個Textviews橫跨設備的整個寬度。每個Textview應該包含上面的文本和圖像。Android的textview drawabletop對齊

問題: 圖像總是顯示了對我的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」,只需要使用「背景「 – pskink

+0

背景將使圖標跨越textview的全寬/高度並將我的文本放置在其頂部? +刪除我的背景顏色? – ZackWhite

+0

如果你不想自動填充x和y軸使用BirmapDrawable的引力屬性,你可以使用Rhis Drawable和其他任何一個將它們放在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

這是如此hacky,但是,它的決定 – pskink