我的问题是关于在屏幕上过大的可绘制对象

时间:2019-01-23 07:40:48

标签: android android-studio android-layout

我是编程新手,在某些设备中我的可绘制对象过大。我创建了具有各种像素的图像,然后创建了命名dpi级别的各种drawable 目录。然后根据dpi级别将图像放入可绘制的图像中。仍然在某些手机中图像过大。如何使图像适合所有屏幕尺寸?

谢谢

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        LinearLayout linearLayout = findViewById(R.id.Linlayout);

        Button btn = new Button(this);
        btn.setBackgroundResource(R.drawable.starblack);
        linearLayout.addView(btn);
    }
}

2 个答案:

答案 0 :(得分:1)

我找到了一种方法。如果您有更好的方法,我也想听听。我的解决方案:

    int h = (int) getResources().getDimension(R.dimen._75sdp);
    int w = (int) getResources().getDimension(R.dimen._75sdp);
    setLayoutParams(new RelativeLayout.LayoutParams(w, h));

答案 1 :(得分:0)

您可以使用此库使事情变得更容易,以便您在不同的屏幕尺寸下操作可绘制对象。

这里是Library

您只能使用一个最大尺寸的可绘制xxxhdpi,并将高度和宽度放入SDP,它将对所有屏幕进行管理

例如这样的

<ImageView
    android:id="@+id/ivImage"
    android:layout_width="@dimen/_9sdp"
    android:layout_height="@dimen/_18sdp"
    android:layout_alignParentEnd="true"
    android:layout_alignParentRight="true"
    android:layout_centerVertical="true"
    android:src="@drawable/icon" />

这是根据不同屏幕管理可绘制对象的最简单方法。

已更新

对于以编程方式在 SDP中设置高度和宽度,如下所示:

button.getLayoutParams().width = (int) getResources().getDimension(R.dimen._52sdp);
button.getLayoutParams().height = (int) getResources().getDimension(R.dimen._58sdp);

OR

button.setLayoutParams (new LayoutParams((int) getResources().getDimension(R.dimen._58sdp), (int) getResources().getDimension(R.dimen._52sdp))