如何以编程方式为视图设置特定的宽度/高度?

tan*_*ana 2 android android-layout

我在xml布局文件中有一个布局.
在运行时,我想创建2个文本视图,然后添加到布局中.
=>我无法通过特定大小为2文本视图设置宽度/高度.
如果我设置MATCH_PARENT,那没关系.
如果我按任何特定尺寸设置,它只是WRAP_CONTENT

XML布局文件:

<LinearLayout 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"
    tools:context="com.example.androidsnipcode.MainActivity$PlaceholderFragment"
    android:orientation="vertical"
    android:id="@+id/mylayout">
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)


Dimens.xml:

<resources>
    <!-- Default screen margins, per the Android Design guidelines. -->
    <dimen name="activity_horizontal_margin">16dp</dimen>
    <dimen name="activity_vertical_margin">16dp</dimen>
    <dimen name="heigh">300dip</dimen>
    <dimen name="width">600dip</dimen>
</resources>
Run Code Online (Sandbox Code Playgroud)

Activity.java的onCreate():

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

        LinearLayout.LayoutParams layoutparams1 = new LinearLayout.LayoutParams(
                LayoutParams.MATCH_PARENT, R.dimen.heigh);
        TextView tv = new TextView(this);
        tv.setLayoutParams(layoutparams1);
        tv.setText("hello 1");
        tv.setBackgroundColor(Color.CYAN);
        layout.addView(tv);

        LinearLayout.LayoutParams layoutparams2 = new LinearLayout.LayoutParams(
                R.dimen.width, LayoutParams.MATCH_PARENT);
        TextView tv2 = new TextView(this);
        tv2.setLayoutParams(layoutparams2);
        tv2.setText("hello 2");
        tv2.setBackgroundColor(Color.MAGENTA);
        layout.addView(tv2);
Run Code Online (Sandbox Code Playgroud)

屏幕截图:第一个textview的高度和第二个textview的宽度不符合我的预期(它的包装内容不是我特定的大小)
第一个textview的高度和第二个textview的宽度不符合我的预期

Lib*_*bin 12

你可以这样做.宽度/高度应为像素值.

 ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams(
  getResources().getDimensionPixelSize(R.dimen.width),100);

 textView.setLayoutParams(layoutParams);
Run Code Online (Sandbox Code Playgroud)

您可以从维度资源中读取或硬编码像素值.