2016-02-27 1 views
0

hi программисты мое большое уважение ко всем вам. im new здесь в программировании для 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> 

ответ

0

Ваш TextView родитель является RelativeLayout, вы не можете использовать gravity с RelativeLayout.

Попробуйте использовать в файле макета 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; 
+0

спасибо, сэр .. поэтому его xml - моя проблема. ты мне очень помог .. больше полномочий –

0

Решение 1:

android:gravity устанавливает тяжесть содержания Вид его использовали на.

Вы использовали гравитацию в TextView, имеющем ширину wrap_content, поэтому она не будет иметь никакого различия, поскольку вид имеет ширину, а не содержание.

попробуйте с match_parent шириной и вы увидите разницу.

android:layout_width="macth_parent" 

Решение 2:

использование android:layout_gravity, он устанавливает тяжесть View или Layout в его родителя.

Независимо от того, сколько контента имеет ваш TextView, он установит весь TextView в центре/вправо/влево.

Чтобы сделать его более аффективно убедитесь, что следующие вещи:

  1. При использовании ширины android:gravity использование зрения в качестве match_parent.
  2. Если вы используете android:layout_gravity, используйте ширину вида как wrap_content.

см это программно задать layout_gravity: How to set layout_gravity PROGRAMATICALLY?

1

Использование андроида: гравитация = "center_horizontal" на RadioGroup центрировать радиокнопки.Также гравитация не работает в RelativeLayout. Вы должны выровнять по родительским или другим виджетам. Если вы хотите использовать гравитацию или layout_gravity, используйте linearlayout.

Смежные вопросы