4

小さなボタンを作りたい、

これまでのところ、テキストを小さくしましたが、テキストの周りにはまだ多くのスペースがあります。私は以下のコードを試しました:

    LinearLayout layout = (LinearLayout) view.findViewById(R.id.fragment_dds_tag_linearLayout);
    Button txtName = new Button(getActivity(), null, android.R.attr.buttonStyleSmall);
        txtName.setClickable(false);
        txtName.setTextSize(5);
        txtName.setMaxLines(1);
        txtName.setMaxHeight(40);
        txtName.setMinHeight(0);
        txtName.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));

        txtName.setText(tagsList.get(i));
        layout.addView(txtName);

しかし、このレイアウトxmlファイルと同じように表示したい:

     <Button
    android:id="@+id/button1"
    style="?android:attr/buttonStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:minHeight="5dp"
    android:textSize="10sp"
    android:text="Button" />

プログラムで実行すると setMinHieght が機能しないようです。私は何が間違っているのでしょうか?

ここに画像があります:

ボタン

1 つのラベル付きボタンは xml によって作成され、他のすべてのボタンはプログラムによって作成されました。

ページ全体のレイアウト コードは次のとおりです。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
    android:id="@+id/fragment_dds_rating_ratingBar_textView_heading"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Tags"
    android:textAppearance="?android:attr/textAppearanceMedium" />
<Button
    android:id="@+id/button1"
    style="?android:attr/buttonStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:minHeight="5dp"
    android:textSize="10sp"
    android:text="Button" />
<LinearLayout
    android:id="@+id/fragment_dds_tag_linearLayout"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="10dp"
    android:orientation="horizontal" >
</LinearLayout>

編集: 考えられる解決策:

プログラムでxmlレイアウトボタン(正しく表示されます)を取得し、別のテキストを入力して必要な回数だけ複製する方法はありませんか?

4

4 に答える 4

3

Eclipseでボタン名を書きます。txtName の場合、多くのオプションが表示され、必要なものを選択できます。または開発者のウェブサイトを使用してください。

Button txtName = new Button(getActivity(), null, android.R.attr.buttonStyleSmall);
    txtName.setClickable(false);
    txtName.setHeight(17);
    txtName.setWidth(25);
    txtName.setTextSize(10);
    txtName.setMaxLines(1);
    txtName.setMaxHeight(5);
    txtName.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));

    txtName.setText(tagsList.get(i));
    layout.addView(txtName);
于 2013-09-13T06:35:59.093 に答える
2

ここに解決策があります:

...
Button b = new Button(getContext());
b.setText("Text");
b.setPadding(dpToPx(5), 0, dpToPx(5), 0);
// crazy I have to set both of these?...
b.setMinWidth(0);
b.setMinimumWidth(10);
b.setTextSize(TypedValue.COMPLEX_UNIT_SP, 10);
LinearLayout.LayoutParams params = new 
LinearLayout.LayoutParams(LinearLayout
                .LayoutParams.WRAP_CONTENT, dpToPx(20));
b.setLayoutParams(params);
...

public static int dpToPx(int dp) {
    return (int) (dp * Resources.getSystem().getDisplayMetrics().density);
}
于 2018-06-28T14:44:27.777 に答える
0

固定サイズを使用する必要があります(幅または高さの最小値と最大値が等しい)

コード:

btn.setMaxHeight(40);
btn.setMinHeight(40);
btn.setMaxWidth(40);
btn.setMinimumWidth(40);

XML:

android:maxHeight="40dp"
android:minHeight="40dp"
android:maxWidth="40dp"
android:minWidth="40dp"
于 2013-11-06T06:43:35.190 に答える
0
txtName.setHeight(20);
txtName.setWidth(20);
于 2013-09-13T06:31:52.847 に答える