为什么我的 androidbutton 看起来宽度被压缩了?

Why does it look like my androidbutton is compressed in width?

我想以编程方式在 activity 中添加多个按钮。到目前为止效果很好,但看起来我的按钮宽度被压缩了。该按钮有一个 20*20px 的背景图像,我使用 WRAP_CONTENT 作为宽度和高度。这是代码:

for(int i = 0; i < 5; i++){

        LinearLayout layout;
        Button buttonDel;

        layout = (LinearLayout)findViewById(R.id.linLayout);

        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
        layout.setOrientation(LinearLayout.VERTICAL);

        buttonDel = new Button(this);
        buttonDel.setId(i);
        buttonDel.setBackgroundResource(R.drawable.buttondelete);
        buttonDel.setLayoutParams(params);

        layout.addView(buttonDel);

    }

和 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:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="com.developer.cardz.ListOfAllWordsActivity">

<ScrollView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:id="@+id/scrollView">

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:id="@+id/linLayout">

    </LinearLayout>
</ScrollView>

你有什么建议吗?

让我提点建议。

这样你的代码效率更高:

    LinearLayout layout;
    Button buttonDel;

    layout = (LinearLayout)findViewById(R.id.linLayout);


    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);

    for(int i = 0; i < 5; i++){
        buttonDel = new Button(this);
        buttonDel.setId(i);
        buttonDel.setBackgroundResource(R.drawable.buttondelete);
        buttonDel.setLayoutParams(params);

        layout.addView(buttonDel);
    }

并且不需要 layout.setOrientation(LinearLayout.VERTICAL);,因为您的 XML 上有它。

你能展示 R.drawable.buttondelete 吗?如果它是 png9,则缩小是正常的。尝试在按钮上输入一些文字。

我将 Button 更改为 ImageButton。那解决了问题。感谢所有评论的人!

如果您想继续使用 Button,请更改

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(100, 100);

其中 (100, 100) 是您想要的按钮 宽度高度

里面有文字吗?如果您的按钮上有任何文字,那么这些文字将被视为 "content",因此它可能会压缩与文字相关的图像。