如何从代码中创建Android中的真正小按钮?

时间:2012-04-21 12:17:57

标签: android android-layout button

Android默认的Button类提供了一个非常棒的按钮。

button with caption "Save"

周围有很多浪费的空间。现在我想创建一个非常小的按钮,它只比文本/标题略大。如何从代码中执行此操作? 到目前为止,我发现了以下方法,但它仍然提供了太大的按钮并浪费了太多空间:

一个。在res / layout中创建XML(smallbutton.xml):

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

    style="?android:attr/buttonStyleSmall"
    android:text="color"
    android:padding="0dp"
    android:layout_margin="0dp"

    android:textSize="8dp"
    android:maxHeight="2dp"
    android:maxWidth="2dp"

/>

B中。从您的代码中膨胀并添加到视图中:

Button pickBackColor = (Button) this.getLayoutInflater().inflate(R.layout.smalbutton,null);

...

LinearLayout linLayout = new LinearLayout(this);

linLayout.addView(pickBackColor);

现在的问题是按钮仍然太大,它会占用文本周围(在左侧,右侧,上方,下方)的太多空间。

enter image description here

是否有任何提示如何进一步减小按钮的大小?

5 个答案:

答案 0 :(得分:117)

按钮具有最小高度和宽度(默认情况下通常为48dp,分别为64dp)。所以添加

android:minHeight="0dp"
android:minWidth="0dp"

获得非常小的按钮:

enter image description here

答案 1 :(得分:8)

对于您的信息,Android还提供了默认样式,用于定义较小的按钮:

style="?android:attr/buttonStyleSmall"

您还可以根据需要修改此默认样式,并在文件styles.xml中定义自定义属性。以下是问题中描述的修改示例:

<style name="MyButtonStyleSmall" parent="android:Widget.Button.Small">
    <!-- Customizations  -->
    <item name="android:minHeight">0dp</item>
    <item name="android:minWidth">0dp</item>
</style>

然后你只需要在XML中调用它:

<Button 
   android:id="@+id/small_button"
   android:text="@string/example"
   android:contentDescription="@string/example_desc"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   style="@style/MyButtonStyleSmall" />

答案 2 :(得分:0)

在.xml文件中... 你需要将小值传递给xml文件中的layout_height和layout_width ......试试这个。

android:layout_width="50dp" android:layout_height="50dp"  

根据您的要求更改价值......

答案 3 :(得分:0)

在您的代码中尝试此操作:

pickBackColor.setWidth(VALUE);
pickBackColor.setHeight(VALUE);

答案 4 :(得分:0)

    <com.google.android.material.button.MaterialButton
        android:id="@+id/food_item_minus_button"
        android:layout_width="36dp"
        android:layout_height="36dp"
        android:layout_marginTop="8dp"
        android:layout_marginBottom="8dp"
        android:background="@drawable/custom_small_button_bg"
        android:drawableLeft="@drawable/ic_minus"
        android:paddingStart="6dp"
        android:paddingLeft="6dp" />