通过Java(不是通过XML)实现微调器的右对齐
微调器需要在屏幕上右对齐 我试着用重力和其他东西,但都没用 我还尝试了大量搜索这种正确的对齐方式,everywhere解决方案是以XML格式提供的,但不是以Java格式提供的。 有人能帮忙吗:) 代码通过Java(不是通过XML)实现微调器的右对齐,java,android,Java,Android,微调器需要在屏幕上右对齐 我试着用重力和其他东西,但都没用 我还尝试了大量搜索这种正确的对齐方式,everywhere解决方案是以XML格式提供的,但不是以Java格式提供的。 有人能帮忙吗:) 代码 final LinearLayout lm=(LinearLayout)findViewById(R.id.linearLayout1); LinearLayout ll=新的LinearLayout(本); ll.设置方向(水平线性布局); 最终微调器微调器=新微调器(此); spinner.
final LinearLayout lm=(LinearLayout)findViewById(R.id.linearLayout1);
LinearLayout ll=新的LinearLayout(本);
ll.设置方向(水平线性布局);
最终微调器微调器=新微调器(此);
spinner.setOnItemSelectedListener(此);
ArrayAdapter dataAdapter=新的ArrayAdapter(这是android.R.layout.simple\u微调器\u项,类别);
dataAdapter.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉项);
spinner.setAdapter(dataAdapter);
spinner.setEnabled(false);
ll.addView(微调器);
lm.addView(ll);
阿比尔:现在它展示了这个
您必须在此处使用自定义视图来对齐微调器值。创建一个类似answer创建的CustomView,并将android:gravity添加到文本视图中,如右图所示 使用将CustomView设置为适配器
adapter.setDropDownViewResource(android.R.layout.your_custom_created_view);
我认为这应该解决你的问题:
final LinearLayout lm = (LinearLayout) findViewById(R.id.linearLayout1);
LinearLayout ll = new LinearLayout(this);
ll.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
ll.setGravity(Gravity.RIGHT);
ll.setOrientation(LinearLayout.HORIZONTAL);
final Spinner spinner = new Spinner(this);
spinner.setOnItemSelectedListener(this);
ArrayAdapter<String> dataAdapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, categories);
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(dataAdapter);
spinner.setEnabled(false);
ll.addView(spinner);
lm.addView(ll);
final LinearLayout lm=(LinearLayout)findViewById(R.id.linearLayout1);
LinearLayout ll=新的LinearLayout(本);
ll.setLayoutParams(新的LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_父级,ViewGroup.LayoutParams.WRAP_内容));
ll.setGravity(Gravity.RIGHT);
ll.设置方向(水平线性布局);
最终微调器微调器=新微调器(此);
spinner.setOnItemSelectedListener(此);
ArrayAdapter dataAdapter=新的ArrayAdapter(这是android.R.layout.simple\u微调器\u项,类别);
dataAdapter.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉项);
spinner.setAdapter(dataAdapter);
spinner.setEnabled(false);
ll.addView(微调器);
lm.addView(ll);
您应该设置动态线性布局的宽度和高度。然后把它的重力调到右边。然后您的微调器将在视图的右侧对齐。我希望这对您有用。它有点复杂,因为它有多个嵌套视图。但这会解决问题,我想你会得到你想要的观点
final LinearLayout lm = (LinearLayout) findViewById(R.id.linearLayout1);
LinearLayout ll = new LinearLayout(this);
ll.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
ll.setWeightSum(1);
ll.setOrientation(LinearLayout.HORIZONTAL);
final CheckBox box = new CheckBox(this);
box.setLayoutParams(new LinearLayout.LayoutParams(0, ViewGroup.LayoutParams.WRAP_CONTENT, .1f));
final TextView tv = new TextView(this);
tv.setLayoutParams(new LinearLayout.LayoutParams(0, ViewGroup.LayoutParams.WRAP_CONTENT, .3f));
tv.setText("STD_MOBILE");
LinearLayout l2 = new LinearLayout(this);
l2.setLayoutParams(new LinearLayout.LayoutParams(0, ViewGroup.LayoutParams.WRAP_CONTENT, .6f));
l2.setGravity(Gravity.RIGHT);
l2.setOrientation(LinearLayout.HORIZONTAL);
final Spinner spinner = new Spinner(this);
spinner.setOnItemSelectedListener(this);
ArrayAdapter<String> dataAdapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, categories);
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(dataAdapter);
spinner.setEnabled(false);
l2.addView(spinner);
ll.addView(box);
ll.addView(tv);
ll.addView(l2);
lm.addView(ll);
final LinearLayout lm=(LinearLayout)findViewById(R.id.linearLayout1);
LinearLayout ll=新的LinearLayout(本);
ll.setLayoutParams(新的LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_父级,ViewGroup.LayoutParams.WRAP_内容));
ll.设定权重总和(1);
ll.设置方向(水平线性布局);
最终复选框=新复选框(此复选框);
box.setLayoutParams(新的LinearLayout.LayoutParams(0,ViewGroup.LayoutParams.WRAP_内容,.1f));
最终文本视图电视=新文本视图(本);
tv.setLayoutParams(新的LinearLayout.LayoutParams(0,ViewGroup.LayoutParams.WRAP_内容,.3f));
tv.setText(“STD_MOBILE”);
LinearLayout l2=新的LinearLayout(本);
l2.setLayoutParams(新的LinearLayout.LayoutParams(0,ViewGroup.LayoutParams.WRAP_内容,.6f));
l2.设置重力(重力。右侧);
l2.设置方向(线性布局。水平);
最终微调器微调器=新微调器(此);
spinner.setOnItemSelectedListener(此);
ArrayAdapter dataAdapter=新的ArrayAdapter(这是android.R.layout.simple\u微调器\u项,类别);
dataAdapter.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉项);
spinner.setAdapter(dataAdapter);
spinner.setEnabled(false);
l2.addView(微调器);
ll.addView(框);
ll.addView(电视);;
ll.addView(l2);
lm.addView(ll);
我使用了权重来指定您的ChildView的确切空间。然后将微调器父布局的重力向右调整。谢谢您的回复。:)但现在一切都会好起来的。我想,因为我们为线性布局设置了重力,它已经改变了一切。请找到新的图像@top。我只需要最右边的微调器。我以为你们只有一个孩子作为微调器。我有3…1个复选框,1个文本视图和1个微调器。我只想要微调器右对齐。你能帮忙吗?:)所以您需要一个复选框,然后是一个文本视图,然后是一个微调器。现在我的问题是,您希望微调器紧跟在TextView之后还是在视图的末尾对齐?它的工作方式是Abir。感谢您付出的所有努力。:)我很高兴这有帮助:)
final LinearLayout lm = (LinearLayout) findViewById(R.id.linearLayout1);
LinearLayout ll = new LinearLayout(this);
ll.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
ll.setWeightSum(1);
ll.setOrientation(LinearLayout.HORIZONTAL);
final CheckBox box = new CheckBox(this);
box.setLayoutParams(new LinearLayout.LayoutParams(0, ViewGroup.LayoutParams.WRAP_CONTENT, .1f));
final TextView tv = new TextView(this);
tv.setLayoutParams(new LinearLayout.LayoutParams(0, ViewGroup.LayoutParams.WRAP_CONTENT, .3f));
tv.setText("STD_MOBILE");
LinearLayout l2 = new LinearLayout(this);
l2.setLayoutParams(new LinearLayout.LayoutParams(0, ViewGroup.LayoutParams.WRAP_CONTENT, .6f));
l2.setGravity(Gravity.RIGHT);
l2.setOrientation(LinearLayout.HORIZONTAL);
final Spinner spinner = new Spinner(this);
spinner.setOnItemSelectedListener(this);
ArrayAdapter<String> dataAdapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, categories);
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(dataAdapter);
spinner.setEnabled(false);
l2.addView(spinner);
ll.addView(box);
ll.addView(tv);
ll.addView(l2);
lm.addView(ll);