增加高度时按钮会消失

时间:2014-05-21 12:34:32

标签: android android-layout

我尝试创建方形按钮。当增加按钮的高度时,它会消失。但是,当增加它的宽度时,一切正常。那里发生了什么?

private void adjustButtons() {
        final Button trainerButton = (Button) findViewById(R.id.bu_vocabulary_start_trainer);

        trainerButton.setOnClickListener(new Button.OnClickListener() {

            @Override
            public void onClick(View arg0) {
                ViewGroup.LayoutParams params = shareButton.getLayoutParams();
//              params.width++; // works fine
                params.height++; // button disappears
//              params.height = params.width; // what I acutually want to do
                shareButton.setLayoutParams(params);
            }
        });

    }

xml文件

<LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:layout_marginTop="30dp"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/bu_vocabulary_start_trainer"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/vocabulary_trainer" />

        <Button
            android:id="@+id/bu_vocabulary_start_administration"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/vocabulary_administration" />
    </LinearLayout>

4 个答案:

答案 0 :(得分:0)

你应该使用dp编号来表示身高和体重。

height ++不适用于wrap_content

答案 1 :(得分:0)

试试这个,

private void adjustButtons() {
        final Button trainerButton = (Button) findViewById(R.id.bu_vocabulary_start_trainer);

        trainerButton.setOnClickListener(new Button.OnClickListener() {

            @Override
            public void onClick(View arg0) {
                LinearLayout.LayoutParams params = shareButton.getLayoutParams();
//              params.width++; // works fine
                params.height++; // button disappears
//              params.height = params.width; // what I acutually want to do
                shareButton.setLayoutParams(params);
            }
        });

    }

答案 2 :(得分:0)

首先,WRAP_CONTENTjust an integer value, which maps to -2。增加它会将其更改为-1,即MATCH_PARENT

你现在看到了这种情况吗?您的LinearLayout的高度为WRAP_CONTENT。这意味着“使其高度尽可能大,以包含其子女”。如果将孩子设置为MATCH_PARENT,则意味着“让他们与父母一样大”。通过使父级和子级都高0像素来解决这种情况。因此,他们“消失”。

但你可以做的是:

params.height = shareButton.getHeight() + 1;

答案 3 :(得分:0)

这一行可能会对您有所帮助:

button.setLayoutParams (new LayoutParams(LayoutParams.WRAP_CONTENT, yourheight++);