当设备是平板电脑时,我需要进行对话活动,更广泛并且使用的屏幕比目前更多。
请看屏幕截图:
我需要大约70%的屏幕宽度?
有没有办法指定此对话框的宽度。
为实现这一目标,我有以下几点:
styles.xml
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar"/>
<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light"/>
<style name="DialogTheme" parent="AppTheme"/>
</resources>
styles.xml(sw600dp)
<resources>
<style name="DialogTheme" parent="Theme.AppCompat.DialogWhenLarge"/>
</resources>
清单:
<manifest package="stillie.co.za.dialogwhenlarge"
xmlns:android="http://schemas.android.com/apk/res/android">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity
android:name=".DialogWhenLargeActivity"
android:label="@string/title_activity_dialog_when_large"
android:theme="@style/DialogTheme"> <-----------notice this-----------
</activity>
</application>
</manifest>
有人知道如何只在平板电脑上放宽屏幕宽度。我现在如何设置它,当设备是一个手机时它工作正常,它的全屏应该是,但我唯一的问题是它的平板电脑,对话框主题太窄。
答案 0 :(得分:2)
您有两个选择
创建自定义对话框&amp;添加以下行
@Override
public void onAttachedToWindow() {
DisplayMetrics metrics = getContext().getResources().getDisplayMetrics();
int width = metrics.widthPixels;
int height = metrics.heightPixels;
getWindow().setLayout(width * 70 / 100, height * 30 / 100);
super.onAttachedToWindow();
}
注意:根据您的要求更改百分比
或者
答案 1 :(得分:0)
对于 RESPONSIVE
案例,
DIALOG
。DisplayMetrics
规则。试试这种方式,
DisplayMetrics metrics = getResources().getDisplayMetrics();
int width = metrics.widthPixels;
int height = metrics.heightPixels;
final Dialog dialog = new Dialog(YourActivity.this);
dialog.getWindow().setLayout((int) (width*85 / 100), (int) (height*35 / 100));
答案 2 :(得分:0)
将此代码放在 OnCreate()方法中: -
DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int width = displaymetrics.widthPixels -
common.convertDpToPixel(60, this);
Log.i("widthval", "width" + width);
getWindow().setLayout(width, ViewGroup.LayoutParams.WRAP_CONTENT);
getWindow().setGravity(Gravity.CENTER);
这是一个“ convertDpToPixel ”方法声明到您的公共文件中: -
public static int convertDpToPixel(int dp, Context context) {
Resources resources = context.getResources();
DisplayMetrics metrics = resources.getDisplayMetrics();
int px = dp * ((int) metrics.densityDpi / DisplayMetrics.DENSITY_DEFAULT);
return px;
}
我推了60-dp,但你可以根据自己的要求进行更改。
希望这会对你有所帮助。