2015-04-28 42 views
7

我在android中創建了一個簡單的切換按鈕,並將背景設置爲drawable。從Android中切換按鈕中刪除填充

<ToggleButton 
    android:layout_width="wrap_content" 
    android:drawablePadding="0dp" 
    android:layout_height="wrap_content" 
    android:text="" 
    android:textSize="12sp" 
    android:padding="0dp" 
    android:id="@+id/tag_text" 
    android:background="@drawable/toggle_selector"/> 

toggle_selector.xml看起來是這樣的:

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

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/toggle_button_off" android:state_checked="false"/> 
    <item android:drawable="@drawable/toggle_button_on" android:state_checked="true"/> 
</selector> 

toggle_button_off和toggle_button_on具有簡單的形狀繪製了一些色彩。

這是我怎麼充氣這個切換按鈕,進入我的觀點:

View child = getLayoutInflater().inflate(R.layout.tags, null); 
     ToggleButton tag = ((ToggleButton)child.findViewById(R.id.tag_text)); 
     tag.setText("Testing"); 
     tag.setTextOff("Testing"); 
     tag.setTextOn("Testing"); 
     flowlayout.addView(child); 

的問題是周圍有在切換按鈕上的文字只是太多的填充,我無法擺脫它通過設置padding = "0dp"。這些按鈕上的文字動態添加,因此設置恆定的身高體重也無濟於事。

enter image description here

+0

你是什麼意思了太多的填充?怎麼樣改變文字大小? – Opiatefuchs

+0

文本與togglebutton邊界之間的填充。我想要按鈕來包裝文本。 –

+0

這是默認的高度和寬度,如果你想包裝,那麼你必須製作圖像的可繪製或給高度或寬度 –

回答

21

我通過設置minWidth,到了minHeight了0dp的解決方案。包裝寬度和高度的內容。然後添加自定義填充到我想要的togglebutton。

<ToggleButton 
    android:layout_width="wrap_content" 
    android:minWidth="0dp" 
    android:minHeight="0dp" 
    android:layout_height="wrap_content" 
    android:text="" 
    android:textSize="12sp" 
    android:padding="2dp" 
    android:id="@+id/tag_text" 
    android:background="@drawable/toggle_selector"/> 
+0

不幸的是,我不適合。我已經編程設置了這些值,並且ToggleButton仍然添加了大填充。 Android 5.0.1 –

+1

我發現刪除填充的唯一方法是以編程方式將minHeight和minimumHeight設置爲0(您不能將minimumHeight設置爲xml佈局): toggleButton.setMinHeight(0); toggleButton.setMinimumHeight(0); 同樣的寬度 – Bubu

1

使用CheckedTextView代替:

final CheckedTextView toggle = new CheckedTextView(clipboardWordsLayout.getContext()); 
toggle.setText(kanji); 
final int min = Views.dp2px(48, clipboardWordsLayout.getContext()); 
toggle.setMinimumWidth(min); 
toggle.setMinimumHeight(min); 
toggle.setGravity(Gravity.CENTER); 
toggle.setBackgroundResource(R.drawable.togglebutton); 
toggle.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     toggle.setChecked(!toggle.isChecked()); 
    } 
});