textview中的android重力不起作用

时间:2016-02-27 11:51:59

标签: android

程序员们,我非常尊重你们所有人。 我是Android编程的新手。

我在使用我的文本视图中具有重力函数的单选按钮时遇到问题,方法是将它们从中间,左侧和右侧对齐。

我的API是23

我正在阅读本教程youtube tutorial,但我的工作不正常

package com.example.testavd;

import android.app.Activity;
import android.graphics.Typeface;
import android.os.Bundle;
import android.view.Gravity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.RadioGroup;
import android.widget.RadioGroup.OnCheckedChangeListener;
import android.widget.TextView;

public class MainActivity extends Activity implements OnCheckedChangeListener {
    TextView txtV;
    RadioGroup rg;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        txtV = (TextView) findViewById(R.id.textOut);
        rg = (RadioGroup) findViewById(R.id.rdG);
        rg.setOnCheckedChangeListener(this);

        Button b = (Button) findViewById(R.id.button1);

        b.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                txtV.setText("boom");

            }
        });

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

    @Override
    public void onCheckedChanged(RadioGroup group, int checkedId) {
        // TODO Auto-generated method stub
        switch(checkedId){
        case R.id.rbCenter:
            txtV.setGravity(Gravity.CENTER);
            break;
        case R.id.rbLeft:
            txtV.setGravity(Gravity.LEFT);
            break;
        case R.id.rbRight:
            txtV.setGravity(Gravity.RIGHT);
            break;

        }
    }
}
  

我的XML

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.testavd.MainActivity" >

    <RadioGroup
        android:id="@+id/rdG"
        android:layout_width="fill_parent"
        android:layout_height="match_parent"
         >
        <RadioButton
        android:id="@+id/rbRight"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/rbLeft"
        android:layout_below="@+id/rbLeft"
        android:layout_marginTop="36dp"
        android:text="Right" />

        <RadioButton
        android:id="@+id/rbLeft"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_marginTop="17dp"
        android:layout_toLeftOf="@+id/button1"
        android:text="Left" />

    <RadioButton
        android:id="@+id/rbCenter"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/button1"
        android:layout_alignLeft="@+id/rbRight"
        android:layout_marginBottom="16dp"
        android:text="Center" />

    </RadioGroup>



    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="Button" />

    <TextView
        android:id="@+id/textOut"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignRight="@+id/button1"
        android:layout_below="@+id/button1"
        android:layout_marginTop="32dp"
        android:text="Output"
        android:textAppearance="?android:attr/textAppearanceLarge" />



</RelativeLayout>

3 个答案:

答案 0 :(得分:1)

在RadioGroup上使用 android:gravity =&#34; center_horizo​​ntal&#34; 以使radiobuttons居中。同样重力在RelativeLayout中不起作用你必须根据父母或其他对齐小部件。如果想使用gravity或layout_gravity,请使用linearlayout。

答案 1 :(得分:0)

您的TextView家长是RelativeLayout,您不能将gravityRelativeLayout一起使用。

尝试在xml布局文件中使用

android:layout_centerHorizontal="true"

Activity

 case R.id.rbCenter:
        RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,   ViewGroup.LayoutParams.WRAP_CONTENT);
        params.addRule(RelativeLayout.CENTER_HORIZONTAL);
        txtV.setLayoutParams(params);
            break;

答案 2 :(得分:0)

解决方案1:

android:gravity设置其使用的View内容的重力。

您使用TextView宽度为wrap_content的重力,因此视图的宽度与内容一样多,因此不会产生任何差异。

尝试使用match_parent宽度,您会发现不同。

android:layout_width="macth_parent"

解决方案2:

使用android:layout_gravity,它会在其父级中设置ViewLayout的严重性。

无论TextView有多少内容,它都会将整个TextView设置为中心/右/左对齐。

为了让它更有情感,请确保遵循以下事项:

  1. 当您使用android:gravity时,请将视图宽度用作match_parent
  2. 当您使用android:layout_gravity时,请将视图宽度用作wrap_content
  3. 将此引用以编程方式设置layout_gravityHow to set layout_gravity PROGRAMATICALLY?