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);
我已经创建了这个布局。其中显示 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);