如何创建设置活动以从底部显示屏幕的一半? [关闭]
Posted
技术标签:
【中文标题】如何创建设置活动以从底部显示屏幕的一半? [关闭]【英文标题】:How create setting activity to appear half of the screen from bottom? [closed] 【发布时间】:2016-04-05 09:33:09 【问题描述】:我想做一个如图所示的设置活动。我开发这种屏幕的逻辑应该是什么?请帮助我,因为我是 android 新手,我想要这种类型的活动。我尝试了很多解决方案,但没有找到像我与您分享的图像。
提前致谢
【问题讨论】:
使用偏好创建底部表github.com/soarcn/BottomSheet 【参考方案1】:最好的选择是为此使用bottomSheet lib。
但你还是想做你自己,就按照下面的方式去做吧。
创建下面的方法
public void openBottomSheet()
View view = getLayoutInflater().inflate(R.layout.bottom_sheet_emp_cov, null);
Spinner spin1 = (Spinner) view.findViewById(R.id.spin1);
Spinner spin2 = (Spinner) view.findViewById(R.id.spin2);
ListView catList = (ListView) view.findViewById(R.id.listItems);
Button btnDone = (Button) view.findViewById(R.id.btnDone);
final Dialog mBottomSheetDialog = new Dialog(RepActivity.this,
R.style.MaterialDialogSheet);
mBottomSheetDialog.setContentView(view);
mBottomSheetDialog.setCancelable(true);
mBottomSheetDialog.getWindow().setLayout(LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
mBottomSheetDialog.getWindow().setGravity(Gravity.BOTTOM);
mBottomSheetDialog.show();
spin1.setAdapter(new ArrayAdapter<String>(RepActivity.this, android.R.layout.simple_dropdown_item_1line, items));
spin2.setAdapter(new ArrayAdapter<String>(RepActivity.this, android.R.layout.simple_dropdown_item_1line, items));
catList.setAdapter(categoryListAdapter);
btnDone.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
mBottomSheetDialog.dismiss();
);
bottom_sheet_emp_cov 布局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/popup_window"
android:layout_
android:layout_
android:layout_gravity="bottom|center"
android:background="@android:color/white"
android:orientation="vertical">
<LinearLayout
android:layout_
android:layout_
android:background="@color/colorPrimary"
android:orientation="horizontal"
android:paddingLeft="10dip"
android:paddingRight="10dip"
android:weightSum="3">
<LinearLayout
android:layout_
android:layout_
android:layout_weight="2"
android:orientation="horizontal">
<TextView
android:id="@+id/txt_uninstall"
android:layout_
android:layout_
android:gravity="center_vertical"
android:text="@string/app_name"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="@color/white"
android:textSize="@dimen/font_normal_size" />
</LinearLayout>
<LinearLayout
android:layout_
android:layout_
android:layout_weight="1"
android:gravity="center|right"
android:orientation="horizontal">
<Button
android:id="@+id/btnDone"
android:layout_
android:layout_
android:text="Done" />
</LinearLayout>
</LinearLayout>
<TextView
android:id="@+id/textView13"
android:layout_
android:layout_
android:padding="10dip"
android:text="Select Zone:"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="@color/colorAccent"
android:textSize="@dimen/font_normal_size_small"
android:textStyle="bold" />
<Spinner
android:id="@+id/spin1"
android:layout_
android:layout_
android:layout_marginBottom="5dip"
android:layout_marginTop="5dip" />
<View
android:layout_
android:layout_
android:background="@color/gray" />
<TextView
android:id="@+id/textView1"
android:layout_
android:layout_
android:padding="10dip"
android:text="Select Region:"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="@color/colorAccent"
android:textSize="@dimen/font_normal_size_small"
android:textStyle="bold" />
<Spinner
android:id="@+id/spin2"
android:layout_
android:layout_
android:layout_marginBottom="5dip"
android:layout_marginTop="5dip" />
<View
android:layout_
android:layout_
android:background="@color/gray" />
<ListView
android:id="@+id/listItems"
android:layout_
android:layout_
android:layout_marginBottom="5dip"
android:layout_marginTop="5dip"
android:choiceMode="singleChoice"
android:divider="@null"
android:dividerHeight="0dp" />
</LinearLayout>
MaterialDialogSheet 样式
<style name="MaterialDialogSheet" parent="@android:style/Theme.Dialog">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:backgroundDimEnabled">true</item>
<item name="android:windowIsFloating">false</item>
<item name="android:windowAnimationStyle">@style/MaterialDialogSheetAnimation</item>
</style>
<style name="MaterialDialogSheetAnimation">
<item name="android:windowEnterAnimation">@anim/popup_show</item>
<item name="android:windowExitAnimation">@anim/popup_hide</item>
</style>
popup_show 动画
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromYDelta="100%p"
android:toYDelta="0"
android:duration="300"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"/>
</set>
popup_hide 动画
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromYDelta="0"
android:toYDelta="100%p"
android:duration="300"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"/>
</set>
【讨论】:
谢谢。你的回答对我帮助很大。非常感谢。【参考方案2】:首先你需要为SettingsActivity
使用这个主题来给它透明背景
<style name="Theme.Transparent4" parent="android:Theme">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowDisablePreview">true</item>
</style>
然后在您的活动中,您可以设置它的宽度和高度 如果你想要它的一半屏幕 您可以以编程方式设置它的高度 父视图全部占用所有屏幕空间 然后创建子布局 以及它的高度
contentView.getLayoutParams().height=screenheight/2;
【讨论】:
投反对票的人能否请您说明投反对票的原因??!! 感谢@Tony 的快速回复。我现在也是这么想的。我会尝试你的解决方案,并让你知道。 你是 wlc,@AkhilGite 告诉我你是否遇到任何问题 @AkhilGite 你的问题解决了吗? 是的。我用过@Dhawal 的解决方案。它很容易。我也试过你的soln,但比较他的soln更好。谢谢。以上是关于如何创建设置活动以从底部显示屏幕的一半? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章