TabWidget切换导致edittext上的文本不显示了
我写了一个tabwidget,顶部有四个tab页,分别是tab1,tab2,tab3,tab4。分别都是用意图的形式启动的,tab1所对应的类名为Activity01 extends Activity。activity01自己的布局文件是个线性布局,线性布局里面又包含一个帧布局,大概如下
<LinearLayout android:orientation="vertical">
<FrameLayout>
<ListView/>
<ListView/>
<LinearLayout android:orientation="horizontal">
<EditText/>
<ImageButton/>
</LinearLayout>
</FrameLayout>
</LinearLayout>
问题是现在我默认进去的是tab1,进了tab1之后输入几个字符,这个时候只要点其他的tab再回来(或者就点一下tab1),edittext这个控件上的字符全部不显示了。只要点一个edittext区域,字符又显示出来了。各位帮帮忙指点一下,到底是为什么?谢谢大家了。
补充,如果在Activity01的布局中把帧布局里面的第三个线性布局移到第一个则可以正常显示。即如下:
<FrameLayout>
<LinearLayout android:orientation="horizontal">
<EditText/>
<ImageButton/>
</LinearLayout>
<ListView/>
<ListView/>
</FrameLayout>
--------------------编程问答-------------------- 求activity01的代码.。。 --------------------编程问答-------------------- <?xml version="1.0" encoding="utf-8" ?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/top" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:background="#00011111">
- <FrameLayout android:id="@+id/matchlist_dialpad" android:layout_width="match_parent" android:layout_height="wrap_content">
<ListView android:id="@+id/match_search_list" android:layout_width="465px" android:layout_height="642px" android:layout_gravity="center_horizontal" />
<ListView android:id="@+id/no_match" android:layout_width="465px" android:layout_height="642px" android:layout_gravity="center_horizontal" android:visibility="gone" />
- <LinearLayout android:id="@+id/digits_deletebutton" android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingTop="252px" android:orientation="horizontal">
<EditText android:id="@+id/digits" android:layout_width="402px" android:layout_height="86px" android:gravity="center" android:paddingLeft="8dip" android:paddingRight="8dip" android:maxLines="1" android:scrollHorizontally="true" android:textSize="46px" android:background="@drawable/btn_dial_textfield" android:textColor="@color/dialer_button_text" android:focusableInTouchMode="true" android:editable="true" android:cursorVisible="false" android:layout_weight="0" android:maxLength="128" />
<ImageButton android:id="@+id/deleteButton" android:layout_width="78px" android:layout_height="86px" android:layout_gravity="center_vertical" android:state_enabled="false" android:background="@drawable/btn_dial_textfield_delete" android:src="@drawable/ic_dial_action_delete" />
</LinearLayout>
</FrameLayout>
<include layout="@layout/bottom_dialpad_buttonsline" />
<ListView android:id="@+id/dialpadChooser" android:layout_width="match_parent" android:layout_height="1dip" android:layout_weight="1" />
</LinearLayout> --------------------编程问答-------------------- 楼上是布局,java文件太长,发不出来。顶一下。谁知道怎么回事吗? --------------------编程问答-------------------- 楼主遇到这种情况其实很简单,那就是你的布局有一部分超出了整个画布,简单的调试方法就是把每个要调试的组建都设置一种背景颜色(彼此之间要不同),就可以看出它们都是怎么分布的看看谁被挡住了 --------------------编程问答-------------------- package cn.zhangxuan.tabtest;
import android.app.Activity;
import android.app.TabActivity;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import android.widget.TabHost;
import android.widget.TabHost.OnTabChangeListener;
import android.widget.TabWidget;
public class Activity01 extends TabActivity {
/** Called when the activity is first created. */
TabHost mTabHost;
TabWidget mTabWidget;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mTabHost=getTabHost();
final Intent intent = getIntent();
String componentName = intent.getComponent().getClassName();
Log.i("zhangxuan","componentName="+componentName+"/"+getClass().getName());
mTabHost.addTab(mTabHost.newTabSpec("1").setIndicator("tab1").setContent(R.id.text1));
mTabHost.addTab(mTabHost.newTabSpec("2").setIndicator("tab2").setContent(R.id.text2));
mTabHost.addTab(mTabHost.newTabSpec("3").setIndicator("tab3").setContent(R.id.text3));
Intent intent2 = new Intent();
intent2.setClass(this, Main2.class);
mTabHost.addTab(mTabHost.newTabSpec("group")
.setIndicator("tab4")
.setContent(intent2));
//mTabHost.setBackgroundColor(Color.argb(150, 22, 70, 150));
//mTabHost.setBackgroundResource(R.drawable.dial_top_normal);
mTabWidget=getTabWidget();
for(int i=0;i<mTabWidget.getChildCount();i++){
mTabWidget.getChildAt(i).getLayoutParams().height=150;
mTabWidget.getChildAt(i).setBackgroundResource(R.drawable.dial_top_normal_a);
mTabWidget.setStripEnabled(false);
}
// EditText m;
mTabHost.setOnTabChangedListener(new OnTabChangeListener() {
@Override
public void onTabChanged(String tabId) {
// TODO Auto-generated method stub
}
});
}
} --------------------编程问答-------------------- package cn.zhangxuan.tabtest;
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.provider.CallLog.Calls;
import android.provider.ContactsContract.PhoneLookup;
import android.util.Log;
import android.view.View;
import android.view.View.OnKeyListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
public class Main2 extends Activity implements View.OnClickListener{
public static final String TAG="Main2";
private ListView ls;
private Button imageButton;
private EditText mDigits;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.main2);
ls=(ListView)findViewById(R.id.no_match);
Cursor cur=getContentResolver().query(Calls.CONTENT_URI,null,
null, null, Calls.DEFAULT_SORT_ORDER);
startManagingCursor(cur);
ListAdapter adapter=new SimpleCursorAdapter(this, android.R.layout.易做图_list_item_2, cur, new String[] {Calls._ID,Calls.NUMBER}, new int[]{android.R.id.text1,android.R.id.text2});
ls.setAdapter(adapter);
mDigits=(EditText)findViewById(R.id.digits);
//mDigits.setTextSize(0, 20);
imageButton = (Button) findViewById(R.id.deleteButton);
imageButton.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
}
--------------------编程问答-------------------- <?xml version="1.0" encoding="utf-8" ?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="match_parent" android:orientation="vertical">
- <FrameLayout android:id="@+id/matchlist_dialpad" android:layout_width="match_parent" android:layout_height="wrap_content">
<ListView android:id="@+id/no_match" android:layout_width="fill_parent" android:layout_height="300px" android:layout_gravity="center_horizontal" />
- <LinearLayout android:id="@+id/digits_deletebutton" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:paddingTop="50px">
<EditText android:id="@+id/digits" android:layout_width="100px" android:layout_height="wrap_content" android:gravity="center" android:paddingLeft="8dip" android:paddingRight="8dip" android:maxLines="1" android:scrollHorizontally="true" android:inputType="phone" android:background="@drawable/btn_dial_textfield" android:focusableInTouchMode="true" android:editable="true" android:layout_weight="0" android:maxLength="128" />
<Button android:id="@+id/deleteButton" android:layout_width="78px" android:layout_height="86px" android:layout_gravity="center_vertical" />
</LinearLayout>
</FrameLayout>
</LinearLayout> --------------------编程问答-------------------- 一个最简单的方法,用edittext输入数据,然后使用textview显示输入的数据就可以了,毕竟edittext提供的是输入功能,不是显示功能、
补充:移动开发 , Android