2014-02-10 34 views
0

你好我是Android应用程序的新手,所以我想你的帮助。更改textview文字和位置,当你点击,然后再次点击回到原来的

所以基本上我所试图做的是改变的TextView从“更多”的内容,以“读少”,然后当我再次点击改回为“阅读更多”。然后我的第二个问题是,当我单击“阅读更多”时,如何从我的主要活动(java不是xml)更改我的textview位置,以及何时再次单击以再次返回到原​​始位置。

这是我的主要活动:

TextView paragraphmore; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     paragraphmore = (TextView) findViewById(R.id.paragraphmore); 
     // hide until its title is clicked 
     paragraphmore.setVisibility(View.GONE); 
    } 


    public void toggle_contents(View v){ 
     paragraphmore.setVisibility(paragraphmore.isShown() 
     ? View.GONE 
     : View.VISIBLE); 
     TextView view = (TextView) findViewById(R.id.readbutton); 
     view.setText("Read less"); 
     } 

这些都是textviews:

<TextView 
android:id="@+id/readbutton" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:text="@string/readbutton" 
android:clickable="true" 
android:onClick="toggle_contents" 
android:layout_marginTop="15dp" 
android:textColor="#FFFFFF" 
android:textSize="11sp"> 
</TextView> 

<!--content to hide/show --> 

<TextView android:id="@+id/paragraphmore" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:text="@string/paragraphmore" 
android:layout_marginTop="15dp" 
android:textColor="#FFFFFF" 
android:textSize="11sp"> 
</TextView> 

回答

0

试试这个..

 Log.v("View.VISIBLE", ""+View.VISIBLE);  //0 

     Log.v("View.GONE", ""+View.GONE);   //8 

     Log.v("visible", ""+paragraphmore.getVisibility()); 

     if(paragraphmore.getVisibility() == 0){ 
      paragraphmore.setVisibility(View.VISIBLE); 
      view.setText("Read Less"); 
     }else{ 
      paragraphmore.setVisibility(View.GONE); 
      view.setText("Read More"); 
     } 
+0

这工作!你有没有关于其他部分的想法? (定位) – pap

0

1)改变的TextView从内容“阅读更多“到”更少阅读“。
我想你需要设置一个布尔变量(例如private boolean readMore)来监听textview的行为。在段落中的xml“android:onClick”属性中设置更多按钮:

public void onTextClick(View v){ readMore =!readMore; if(readMore)readMore(); else readLess(); }

在readMore()方法设置的TextView的文本“阅读”和readLess()方法设置的TextView的文本“阅读少”。

2)我怎样才能改变我的TextView位置从我的主要活动(Java不是XML)当我点击“更多”,并单击时再重新回到原来的位置。例如,你可以设置一个Point(或者2 int)(或者Rect,如果你使用所有的4个边界,或者只是int [])变量来保存你的视图的先前边界。某事像那:

MarginLayoutParams params = (MarginLayoutParams) view.getLayoutParams(); //http://developer.android.com/reference/android/view/ViewGroup.MarginLayoutParams.html 
margins[0] = params.leftMargin; 
margins[1] = params.topMargin; //and so for [2] and [3] 

然后onTextClick方法您的视图的当前利润率保存到本地变量,并设置新的视图的利润率将以前保存,并改变先前保存的利润率将局部变量的内容:

public void onTextClick(View v) { 
    //... 
    int[] newMargins = new int[4]; 
    MarginLayoutParams params = (MarginLayoutParams) view.getLayoutParams(); 
    newMargins[0] = params.leftMargin;// and so on... 
    params.setMargins(margins[0], margins[1], margins[2], margins[3]); 
    margins = newMargins; 
} 

希望它能帮助:)

+0

不,它没有帮助。它不能这样做。我使用setMargins尝试了LinearLayout,但是我无法将“Read Less”读取到我想要的位置,因为它移动了所有文本。所以我认为问题在于ScrollView中的所有文字视图,并且不能这样做。有任何想法吗? – pap

+0

问题出在LinearLayout中。尝试使它成为RelativeLayout –

+0

那么,我测试了第二个textview具有属性android:layout_below =“@ + id/textView01”的情况,并且它在textView01内容增长后自动更改了它的位置。 –

0

您可以在TextView的上点击添加点击监听器和比较GravityFlags(原谅我的C#/单声道语法):

var readbutton = new TextView(this) 
     { 
      Text = "positon", 
      LayoutParameters = 
       new ViewGroup.LayoutParams(200, ViewGroup.LayoutParams.WrapContent) 
     }; 
readbutton.Gravity = GravityFlags.Left; 
readbutton.Click += (sender, args) => 
     { 
      var tvGravity = readbutton.Gravity & GravityFlags.Right; 
      readbutton.Gravity = tvGravity == GravityFlags.Right ? GravityFlags.Left : GravityFlags.Right; 
     }; 

其中readbutton是TextView,你想改变引力

0

我找到了我的答案。据我所知,使用绝对定位或边距布局对我的应用程序没有任何好处,因为那时我的应用程序将从一台设备转到另一台设备时出现问题,分辨率不同。因此,我创建了一个新的可点击的文本视图,可以管理它的位置,然后我将其更改为主要活动toggle_content方法,以便首先使不可见的文本视图更少,然后单击后的文本视图更多。

TextView paragraphmore; 
TextView readbutton; 
TextView readbutton1; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    paragraphmore = (TextView) findViewById(R.id.paragraphmore); 
    // hide until its title is clicked 
    paragraphmore.setVisibility(View.GONE); 
    readbutton1 = (TextView) findViewById(R.id.readbutton1); 
    // hide until its title is clicked 
    readbutton1.setVisibility(View.GONE); 
    readbutton = (TextView) findViewById(R.id.readbutton); 
    readbutton.setVisibility(View.VISIBLE); 
} 


public void toggle_contents(View v){ 
    Log.v("View.VISIBLE", ""+View.VISIBLE);  

    Log.v("View.GONE", ""+View.GONE);    

    Log.v("visible", ""+paragraphmore.getVisibility()); 
    paragraphmore.setVisibility(paragraphmore.isShown() 
    ? View.GONE 
    : View.VISIBLE); 


    if(paragraphmore.getVisibility() == 0){ 
     paragraphmore.setVisibility(View.VISIBLE); 
     readbutton1.setVisibility(View.VISIBLE); 
     readbutton.setVisibility(View.GONE); 
     } 
    else{ 
     readbutton.setVisibility(View.VISIBLE); 
     paragraphmore.setVisibility(View.GONE); 
     readbutton1.setVisibility(View.GONE); 
    } 
    } 
相关问题