【问题标题】:Right Alignment for Spinner via Java (Not via XML)通过 Java 的 Spinner 右对齐(不是通过 XML)
【发布时间】:2016-03-09 17:37:07
【问题描述】:

微调器需要在屏幕上右对齐

我尝试使用 setGravity 等所有东西,但没有任何效果。

我也尝试过大量搜索这种右对齐,所有解决方案都以 XML 格式提供,但 NOT 以 Java 格式提供。 有人可以帮忙吗:)

代码

        final LinearLayout lm = (LinearLayout) findViewById(R.id.linearLayout1);
        LinearLayout ll = new LinearLayout(this);
        ll.setOrientation(LinearLayout.HORIZONTAL);

        final Spinner spinner = new Spinner(this);
        spinner.setOnItemSelectedListener(this);
        ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(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); 

Abir : 现在它显示这个。

【问题讨论】:

    标签: java android


    【解决方案1】:

    我希望这对你有用。它有点复杂,因为它有多个嵌套视图。但这会解决问题,我想你会得到你想要的视图。

        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);    
    

    我已使用权重来指定您的 childViews 的确切空间。然后使 Spinner 的父布局的重力向右。

    【讨论】:

    • 它的工作 Abir。感谢您付出的所有努力。:)
    • 我很高兴它有帮助:)
    【解决方案2】:

    我认为这应该可以解决您的问题:

        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);    
    

    您应该设置动态线性布局的宽度和高度。然后将其重力设置为 RIGHT。然后您的微调器将在视图的右侧对齐。

    【讨论】:

    • 感谢您的回复。 :) 但现在一切都好起来了。我认为因为我们为 Linearlayout 设置了重力,它改变了一切。
    • 请找到新图片@top。我只需要最右边的微调器。
    • 我以为你只有一个孩子作为 Spinner。
    • 我有 3 个 ...1CheckBox、1TextView 和 1 个 Spinner。我只想要微调器右对齐。你能帮忙吗? :)
    • 所以你想要一个 CheckBox,然后是一个 TextView,然后是一个 Spinner。现在我的问题是,您希望微调器紧跟在 TextView 之后还是在视图末尾对齐?
    【解决方案3】:

    您必须在此处使用自定义视图来对齐 Spinner 值。创建一个自定义视图,如this 答案已创建,并将 android:gravity 添加到 TextView 中。

    使用将 CustomView 设置为您的适配器

    adapter.setDropDownViewResource(android.R.layout.your_custom_created_view);
    

    【讨论】:

      猜你喜欢
      • 2012-04-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-16
      • 1970-01-01
      • 1970-01-01
      • 2020-06-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多