Поддержка Android для разных размеров экрана - PullRequest
0 голосов
/ 24 января 2019

Я создал этот макет.в котором отображается текстовое представление и под ним, он имеет кнопки общего доступа для 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)).

Ответы [ 2 ]

0 голосов
/ 24 января 2019

Кто хочет установить экран, не используя просмотр ограничений или создавая различные файлы .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);
0 голосов
/ 24 января 2019

В вашем макете, он может поддерживать любое устройство, в зависимости от его веса атрибута. вопрос в том, что вы понятия не имеете о параметрах макета. для проблемы. Вы можете ссылки на LayoutParams .

Для упомянутого вами реселлера Вы можете получить параметры макета кнопки в 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);
    ...
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...