0

我有一个自定义对话框,我在其中显示了一些结果。结果文本可以有不同的大小,并且当它在对话框中很小时有很多可用空间。如何为结果和自动调整布局自动调整 textView 的大小?

<LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="300dp"
        android:background="@drawable/dialog_bg"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/textView1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="0.01"
            android:gravity="center"
            android:text="Scores"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textSize="18sp"
            android:textStyle="italic"
            android:typeface="serif" />

        <EditText
            android:id="@+id/editText1"
            android:layout_width="fill_parent"
            android:layout_height="80dp"
            android:layout_marginBottom="20dp"
            android:layout_marginLeft="15dp"
            android:layout_marginRight="15dp"
            android:layout_marginTop="10dp"
            android:layout_weight="0.04"
            android:background="@null"
            android:cursorVisible="false"
            android:editable="false"
            android:ems="10"
            android:focusable="false"
            android:focusableInTouchMode="false"
            android:gravity="top|left"
            android:inputType="textMultiLine|textNoSuggestions|textFilter"
            android:textColor="@android:color/white"
            android:textSize="16sp"
            android:textStyle="italic"
            android:typeface="serif" >

            <requestFocus />
        </EditText>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="42dp"
            android:layout_margin="10dp" >

            <Button
                android:id="@+id/ok"
                android:layout_width="70dp"
                android:layout_height="wrap_content"
                android:background="@drawable/ok"
                android:onClick="okAction" />

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_weight="0.99" >
            </LinearLayout>

            <Button
                android:id="@+id/share"
                android:layout_width="91dp"
                android:layout_height="wrap_content"
                android:background="@drawable/share"
                android:onClick="shareAction" />
        </LinearLayout>
    </LinearLayout>
4

2 回答 2

1

只需将任何 TextView 替换为以下自定义类:

public class Text extends TextView {
    public Text(Context context, AttributeSet attrs) {
        super(context, attrs);
        float textSize=this.getTextSize();
        WindowManager wm=(WindowManager)(context.getSystemService(Context.WINDOW_SERVICE));
        Display display=wm.getDefaultDisplay();
        int width=display.getWidth();
        int height=display.getHeight();
        double diagonal=Math.sqrt(Math.pow(height,2)+Math.pow(width,2));
        double ratio=diagonal/1500.0;
        this.setTextSize((float)(ratio*textSize));
    }

}

将 1500.0 替换为您正在测试/构建应用程序的设备的对角屏幕尺寸(以像素为单位)(它必须是双格式,这意味着您应该添加 .0 结尾)。

于 2015-03-08T06:05:43.893 回答
0

将线性布局的高度和宽度更改为wrap_content,同时使用填充或边距,在文本视图中使用wrap_content
不要硬编码任何值

于 2012-08-13T07:48:24.123 回答