我需要知道ImageView的宽度和高度.有没有办法在片段中测量它?在标准Activity中我使用:
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
image.getWidth();
image.getHeight();
}
Run Code Online (Sandbox Code Playgroud)
但是我可以在哪里使用image.getWidth();和image.getHeight();片段?
我正在使用以下布局构建一个Android应用程序.
众所周知,layout_height="wrap_content"这对ViewPager不起作用.
我的问题是如何动态地改变它.ViewPager的内容是从两个xml布局中膨胀的,vp_statistics.xml and vp_campaigns.xml.
这是ViewPager的xml
<LinearLayout
android:id="@+id/topcontent_wrapper"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:orientation="vertical" >
</LinearLayout>
<LinearLayout
android:id="@+id/viewpager_wrapper"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:orientation="vertical" >
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
这是我的PagerAdapter的代码
class MyPagerAdapter extends PagerAdapter{
@Override
public int getCount() {
// TODO Auto-generated method stub
return 2;
}
public Object instantiateItem(View collection, int pos){
LayoutInflater inflater = (LayoutInflater)collection.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
int resId = 0;
switch(pos){
case 0:
resId = R.layout.vp_statistics;
break;
case 1:
resId = R.layout.vp_campaigns;
break;
}
View view = inflater.inflate(resId, …Run Code Online (Sandbox Code Playgroud) 就像LinkedIn前三个屏幕一样
- 溅
- 登录/注册按钮
- 登录/注册表格
所有都具有与背景相同的图像,但是当我们从一个活动移动到另一个活动时,背景图像从右侧滚动到左侧.
我只能尝试,overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_right);
但这不是它的样子.



所以我有一个奇怪的问题,我不完全确定我应该提供的所有信息,但我会尽我所能 - 如果我需要添加更多信息,请告诉我.我有,当我完成我的一个问题Activity,并返回到前一个Activity(或一个新的启动它Intent-这个问题似乎在整理为中心Activity)的UI性能急剧下降约六,七秒钟,然后返回到正常.
从LogCat,此警告始终显示:
07-11 22:09:42.594: W/ActivityManager(292): Launch timeout has expired, giving up wake lock!
07-11 22:09:42.601: W/ActivityManager(292): Activity idle timeout for ActivityRecord{42bf6e00 com.kcoppock.sudokubeta/com.kcoppock.sudoku.SudokuBoardActivity}
Run Code Online (Sandbox Code Playgroud)
一旦活动超时,UI性能就会恢复正常.在那之前,它非常缓慢.我没有可以阻止主线程的代码,我甚至已经注释掉了我的整个onPause()方法,看它是否有任何区别,但事实并非如此.
在Activity没有任何产卵后台线程,不执行任何网络活动,它具有唯一的磁盘访问的一些访问SharedPreferences.我之前能够找到的问题是关于空闲超时HistoryRecord,而不是ActivityRecord.
任何想法会导致什么?或者我如何确定阻止UI线程的内容,如果发生了什么?
编辑:好的,只是尝试注释掉除super.onCreate()和setContentView()之外的所有内容 - 问题仍然存在.它不与任何其他活动,但这个发生,但有什么可这一个.:/
在对单击按钮的响应中,在ImageView(或其他视图)上调用getLocationOnScreen()会给出正确的值.
但是当从Activity :: onCreate()调用getLocationOnScreen()时,我只得到[0,0].我怎样才能解决这个问题?
是否onCreate()太早,无法进行所有计算?有没有一个更好的地方可以挂钩开始动画?
这个问题已被多次询问,但是每个人都给出了为什么会出现这种问题的原因(即在布局布局之前进行计算).但我需要解决方案.我试过getBottom();,getTop();,getLocationOnScreen(int[] location);.但是所有返回零值(0).我甚至尝试过这些onStart();,给予时间布局,但没有运气.这是我的代码:
TextView tv;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tv = (TextView) findViewById(R.id.textView1);
Log.d("getBottom :", Integer.toString(tv.getBottom()));
Log.d("gettop :", Integer.toString(tv.getTop()));
int[] location = new int[2];
tv.getLocationOnScreen(location);
Log.d("getlocationonscreen values :", Integer.toString(location[0])+" "+Integer.toString(location[1]));
}
@Override
protected void onStart() {
Log.d("getBottom in onStart :", Integer.toString(tv.getBottom()));
Log.d("gettop in onStart :", Integer.toString(tv.getTop()));
int[] location = new int[2];
tv.getLocationOnScreen(location);
Log.d("getlocationonscreen in onStart :", Integer.toString(location[0])+" "+Integer.toString(location[1]));
super.onStart();
}
Run Code Online (Sandbox Code Playgroud)
布局XML:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" > …Run Code Online (Sandbox Code Playgroud) 我正在显示一个textview(我打算将其填满整个屏幕,不包括它下面的按钮)和一个活动中的按钮(底部的小按钮).我想将textview放在按钮上.我不想硬编码任何高度/宽度.
因此,对于按钮,我将高度广告宽度保持为word_wrap对于textview,我将宽度保持为填充父级.
我想知道的是,无论如何,我可以指定textview高度为screenheight-button高度.我想在xml文件中使用它,但在我的代码中不是dnamically.
我有一些文字将被放入TextView.我这样做了setText().
现在我需要找到文本占用的行数或高度TextView.我尝试过使用getHeight(),但它总是返回0.
反正有没有得到文本的高度TextView?
我试图使用ListView创建ListView滚动的背景.我的方法是基于货架上的这个课程,但在货架上一切都有相同的高度,我无法做出同样的保证.
我有这样的活动:
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView listView = (ListView) findViewById(R.id.listView);
List<String> items = new ArrayList<String>();
for(int i=0; i < 100; ++i) {
items.add("Hello " + i);
}
CustomArrayAdapter adapter = new CustomArrayAdapter(this, items);
listView.setAdapter(adapter);
}
}
Run Code Online (Sandbox Code Playgroud)
CustomArrayAdapter的位置是:
public class CustomArrayAdapter extends ArrayAdapter<String> {
private List<Integer> mHeights;
public View getView(int position, View convertView, ViewGroup parent) {
//snip
}
}
Run Code Online (Sandbox Code Playgroud)
我想要做的是在适配器中使用视图行的高度填充mHeights.
我的主要尝试是在getView()中执行此操作:
if(row.getMeasuredHeight() == 0) {
row.measure(
MeasureSpec.makeMeasureSpec(0, MeasureSpec.EXACTLY), …Run Code Online (Sandbox Code Playgroud)