我必须在某些事件上创建类似的UX。这是Any.Do android app的用户体验。
我尝试通过将活动主题指定为Theme.AppCompat.Light.Dialog
并将Window Layout Params gravity设置为Bottom来实现此目的。
但我得到了这个:
对话框未绘制全宽。我试图更改Theme.AppCompat.Light.Dialog
的以下属性:
<item name="android:windowMinWidthMajor">100%</item>
<item name="android:windowMinWidthMinor">100%</item>
然后我明白了:
当我增加Minor或Major宽度属性时,对话框显示如下:
我的宣言:
<activity android:name=".ScreenRateReminder"
android:theme="@style/CustomDialog"/>
样式定义:
<style name="CustomDialog" parent="Theme.AppCompat.Light.Dialog">
<item name="android:windowMinWidthMajor">100%</item>
<item name="android:windowMinWidthMinor">100%</item>
</style>
布局代码:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<RelativeLayout
android:id="@+id/company_info_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:paddingLeft="20dp"
android:paddingRight="20dp">
<de.hdodenhof.circleimageview.CircleImageView
android:id="@+id/logo"
android:layout_width="100dp"
android:layout_height="100dp"
android:src="@drawable/building_image"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_toRightOf="@+id/logo"
android:layout_marginTop="20dp"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:layout_centerVertical="true">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Title"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Tagline"/>
</LinearLayout>
</RelativeLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="30dp"
android:gravity="center"
android:orientation="horizontal">
<ImageView
android:id="@+id/btn_satisfied"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_smile" />
<ImageView
android:id="@+id/btn_happy"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_average"
android:layout_marginLeft="20dp"/>
<ImageView
android:id="@+id/angry_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_angry"
android:layout_marginLeft="20dp"/>
</LinearLayout>
</LinearLayout>
</RelativeLayout>
活动代码:
public class RateReminderActivity extends Activity{
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Window window = getWindow();
WindowManager.LayoutParams layoutParams = window.getAttributes();
layoutParams .gravity = Gravity.BOTTOM;
window.setAttributes(layoutParams);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.screen_rate_reminder);
}
我甚至尝试过:window.setLayout(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT);
和:
wlp.width = WindowManager.LayoutParams.MATCH_PARENT;
wlp.height = WindowManager.LayoutParams.WRAP_CONTENT;
但对我来说,没有什么能让对话框成为全宽。
答案 0 :(得分:0)
使用此主题,它将提供透明的活动,
<style name="Theme.Transparent" parent="android:Theme.Translucent.NoTitleBar">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
</style>
只有setContentView的活动
public class RateReminderActivity extends Activity{
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.screen_rate_reminder);
}
你的布局,
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="#fff"
android:orientation="vertical">
<RelativeLayout
android:id="@+id/company_info_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="10dp"
android:paddingLeft="20dp"
android:paddingRight="20dp"
android:paddingTop="10dp">
<de.hdodenhof.circleimageview.CircleImageView
android:id="@+id/logo"
android:layout_width="100dp"
android:layout_height="100dp"
android:src="@drawable/building_image"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginTop="20dp"
android:layout_toRightOf="@+id/logo"
android:orientation="vertical"
android:paddingLeft="10dp"
android:paddingRight="10dp">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Title"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Tagline"/>
</LinearLayout>
</RelativeLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="30dp"
android:gravity="center"
android:orientation="horizontal">
<ImageView
android:id="@+id/btn_satisfied"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_smile"/>
<ImageView
android:id="@+id/btn_happy"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:src="@drawable/ic_average"/>
<ImageView
android:id="@+id/angry_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:src="@drawable/ic_angry"/>
</LinearLayout>
</LinearLayout>
</RelativeLayout>
<强>编辑:强>
如果您想使用AppCompatActivity
和Theme.AppCompat
,可以使用这样的风格,
<style name="AppThemeTransparent" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:colorBackgroundCacheHint">@null</item>
<item name="android:windowIsTranslucent">true</item>
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:windowContentOverlay">@null</item>
</style>