0

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

内容.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))。

4

2 回答 2

0

谁想在不使用约束视图或创建不同的 .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);
于 2019-01-24T10:02:01.093 回答
0

在您的布局中,它可以支持任何设备,具体取决于它的权重属性。问题是你不知道布局参数。对于问题。您可以链接到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);
    ...
    }
于 2019-01-24T08:07:23.843 回答