如图所示,我希望在微调器点击(图像1)时获得作为背景的transperent视图。当选择项目时返回正常视图(图像2)
我尝试了以下方法,但是工作得很好。 任何人都有任何想法!! ..任何帮助都会得到赞赏。感谢
spinnerrelevence.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
if (motionEvent.getAction() == MotionEvent.ACTION_UP) {
//first way
mRoot.setBackgroundColor(getResources().getColor(R.color.transperent));
//second way
getWindow().setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
//third way
getApplication().setTheme(R.style.Theme_Transparent);
//fourth way
getWindow().setBackgroundDrawableResource(R.color.transperent);
}
return false;
}
});
在style.xml中:
<!--for transperent activity-->
<style name="Theme.Transperent" 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:windowIsFloating">true</item>
<item name="android:backgroundDimEnabled">false</item>
</style>
答案 0 :(得分:1)
您可以使用根布局来设置透明度,例如,如果您将线性布局作为该屏幕的根布局,那么设置alpha(51),以便在点击微调器项目时获得透明度并删除alpha选择微调器项目。
或者您可以使用以下代码来调暗背景
WindowManager wm = (WindowManager) activity.getSystemService(Context.WINDOW_SERVICE);
WindowManager.LayoutParams p = (WindowManager.LayoutParams) container.getLayoutParams();
p.flags = WindowManager.LayoutParams.FLAG_DIM_BEHIND;
p.dimAmount = 0.3f;
wm.updateViewLayout(container, p);
用您的视图替换容器。
答案 1 :(得分:0)
这是技巧,你可以做到这一点来实现你想要的 您可以在“警报”对话框中进行微调,并执行此操作,这将根据您的需要创建透明背景
LayoutInflater li = LayoutInflater.from(context);
View promptsView = li.inflate(R.layout.my_dialog_layout, null);
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context);
alertDialogBuilder.setView(promptsView);
// create alert dialog
final AlertDialog alertDialog = alertDialogBuilder.create();
final Spinner mSpinner= (Spinner) promptsView
.findViewById(R.id.mySpinner);
// reference UI elements from my_dialog_layout in similar fashion
mSpinner.setOnItemSelectedListener(new OnSpinnerItemClicked());
// show it
alertDialog.show();
alertDialog.setCanceledOnTouchOutside(false);
my_dialog_layout 是您包含Spinner mySpinner的弹出式布局
public class OnSpinnerItemClicked implements OnItemSelectedListener {
@Override
public void onItemSelected(AdapterView<?> parent,
View view, int pos, long id) {
Toast.makeText(parent.getContext(), "Clicked : " +
parent.getItemAtPosition(pos).toString(), Toast.LENGTH_LONG).show();
}
@Override
public void onNothingSelected(AdapterView parent) {
// Do nothing.
}
}
答案 2 :(得分:0)
默认情况下,Spinner的显示样式将采用下拉菜单的形式。我们还可以在对话框中显示微调器。 如果以对话框的形式打开它,就可以达到你想要的效果。
只需在你的spinner xml
中添加它android:spinnerMode="dialog"
希望这会对你有所帮助。