我在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"
来摆脱它。这些按钮上的文字是动态添加的,因此设置恒定的高度权重也无济于事。
答案 0 :(得分:26)
我通过将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"/>
答案 1 :(得分: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());
}
});