我有一個按鈕,大小爲width=216
和height=110
在設備屏幕分辨率爲1080 x 1920.當我更改爲其他設備(較小的分辨率)時,按鈕是如此之大。因此,我需要編寫一個功能來根據屏幕的設備分辨率動態更改按鈕大小。首先,我會檢查目標設備的分辨率,然後根據我目前的設備進行更改。但是,按鈕分辨率不正確。我該如何解決它?這是我的代碼如何根據屏幕設備更改按鈕大小?
我在1080×1920
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_gravity="center"
>
<Button
android:id="@+id/btn"
android:layout_width="216dp"
android:layout_height="110dp"
android:layout_gravity="center"
android:scaleType="fitCenter"
/>
</LinearLayout>
代碼更改爲動態的方式:
public int WIDTH ;
public int HEIGHT ;
//Get screen resolution
DisplayMetrics metrics = getResources().getDisplayMetrics();
HEIGHT = metrics.heightPixels;
WIDTH= metrics.widthPixels;
int height_px = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 110, getResources().getDisplayMetrics());
int weight_px = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 216, getResources().getDisplayMetrics());
int width_linearlayout = Math.round((float)weight_px/1080*WIDTH);
int height_linearlayout = Math.round((float)height_px/1920*HEIGHT);
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(width_linearlayout,height_linearlayout);
btn.setLayoutParams(layoutParams);
你有沒有通過[支持多種佈局(HTTPS閱讀://開發商。 android.com/guide/practices/screens_support.html)?如果不是的話,我建議你繼續看看。 – Abbas
@Abbas:它來自xml和drawable文件夾。我想用編程來改變我的按鈕 – user8264
然後,你將不得不做很多值得的工作。我建議你通過佈局來做到這一點。檢查@slackwars答案,這是實現你想要的最好的方式。但是,解決方案僅適用於具有相似佈局的情況。對於不同大小的不同佈局,您必須添加多個佈局。 – Abbas