Android 支持不同的屏幕尺寸

Android support for different screen sizes

我已经创建了这个布局。其中显示 textview,在其下方,它有用于 insta、fb、copy、tweet 的共享按钮。

content.xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout android:layout_height="wrap_content"
android:orientation="vertical"
    android:id="@+id/Main"
    android:layout_gravity="center"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent">

    <RelativeLayout
        android:id="@+id/Sub_main"
        android:layout_width="match_parent"
        android:gravity="bottom"
        android:background="@drawable/linerlayout_background"
        android:layout_height="match_parent">


        <TextView android:layout_width="wrap_content"
            android:layout_height="wrap_content"


      android:layout_margin="15dp"
        android:id="@+id/txt_hash"/>

        <LinearLayout
            android:id="@+id/sub"
            android:layout_below="@+id/txt_hash"
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/button">


            <Button android:layout_height="wrap_content"
                android:layout_weight="1"
                android:layout_width="wrap_content"
                android:background="@drawable/fb"
                android:id="@+id/fb"/>


            <Button android:layout_height="wrap_content"
                android:layout_width="wrap_content"
                android:layout_weight="1"
                android:background="@drawable/insta"
                android:id="@+id/insta"/>


            <Button android:layout_height="wrap_content"
                android:layout_weight="1"
                android:layout_width="wrap_content"
                android:background="@drawable/tweet"
                android:id="@+id/tweet"/>


            <Button android:layout_height="wrap_content"
                android:layout_width="wrap_content"
                android:layout_weight="1"
                android:background="@drawable/doc"
                android:id="@+id/doc"/>

        </LinearLayout>

</RelativeLayout>

我有 recyclerview 有此内容要查看。现在我想根据每个设备屏幕尺寸正确地调整这些按钮。我不知道 layoutparams,我已经引用了链接,但我需要了解如何计算内部特定按钮的大小 (Framelayout/RelativeLayout/LinearLayout/Buttons(4))。

在您的布局中,它可以支持任何设备,具体取决于它的权重属性。 问题是你不知道布局参数。因为 problem.you 可以链接到 LayoutParams

对于你提到的recyclerView,你可以在onCreateViewHolder中获取按钮的布局参数。

 @Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.story_item, parent,
            false);
    Button button = view.findViewById(R.id.txtId);
    LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) button.getLayoutParams();
    //for example:one quater of the device's width
    layoutParams.width="your width";
    layoutParams.height="your height";
    //and so on,the layoutParams also has extra parameter
    button.setLayoutParams(layoutParams);
    ...
    }

不使用constraintview或创建不同的.xmls和图像文件的人可以按照我得到的解决方案的方法设置屏幕。

我已经在我的 adapter.class

中实现了
    DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
    int deviceWidth = displayMetrics.widthPixels; 
    int deviceHeight= displayMetrics.heightPixels;

    int Linearwidth=    (deviceWidth*692 ) /720;
    int Linearheight =   (deviceHeight *100 ) /1280;

    int iv_width = (deviceWidth *78)/720;
    int iv_height=(deviceHeight*78)/1280;

    int Text_Linear_Width = (deviceWidth * 710)/720;
    int Text_Linear_Height =(deviceHeight * 319)/1280;
    txt_hash.setTextSize(TypedValue.COMPLEX_UNIT_PX, Text_Linear_Width * 28 / 720);

    LinearLayout.LayoutParams lp =new LinearLayout.LayoutParams(iv_width,iv_height);

    lp.leftMargin = (Linearwidth*78)/720;
    lp.rightMargin = (Linearheight*78)/1280;
    lp.bottomMargin=(Linearheight*200)/1280;
    lp.topMargin=(Linearheight*200)/1280;


    fb.setLayoutParams(lp);
    insta.setLayoutParams(lp);
    tweet.setLayoutParams(lp);
    doc.setLayoutParams(lp);