我已经将我的按钮设置为按Facebook,Instagram,Twitter和Reddit的顺序从上到下排列,但是它没有这样做,只显示了Facebook和Reddit,我不知道为什么。
我有一些按钮可以使用以下代码在创建活动时自动调整大小:
public void getScreenRes() {
DisplayMetrics display = this.getResources().getDisplayMetrics();
int screenwidth = display.widthPixels;
int screenheight = display.heightPixels;
double buttonheight = screenwidth / 2.66666667;
int buttonheightint= (int) Math.round(buttonheight);
ImageButton fbLogin = (ImageButton) findViewById(R.id.facebookLogin);
ViewGroup.LayoutParams fb = fbLogin.getLayoutParams();
fb.width = screenwidth;
fb.height = buttonheightint;
fbLogin.setLayoutParams(fb);
ImageButton instaLogin = (ImageButton) findViewById(R.id.instagramLogin);
ViewGroup.LayoutParams insta = instaLogin.getLayoutParams();
insta.width = screenwidth;
insta.height = buttonheightint;
instaLogin.setLayoutParams(insta);
ImageButton twitLogin = (ImageButton) findViewById(R.id.twitterLogin);
ViewGroup.LayoutParams twit = instaLogin.getLayoutParams();
twit.width = screenwidth;
twit.height = buttonheightint;
twitLogin.setLayoutParams(twit);
ImageButton redditLogin = (ImageButton) findViewById(R.id.redditLogin);
ViewGroup.LayoutParams reddit = instaLogin.getLayoutParams();
reddit.width = screenwidth;
reddit.height = buttonheightint;
redditLogin.setLayoutParams(reddit);
}
XML:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:paddingTop="16dp"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.eren.valour.FirstTimeLogin">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="@string/getStarted"
android:id="@+id/getStartedText"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
/>
<ImageButton
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="100dp"
android:background="@drawable/facebook"
android:id="@+id/facebookLogin"
android:onClick="facebookLogin"
/>
<ImageButton
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/instagram"
android:layout_below="@+id/facebookLogin"
android:id="@+id/instagramLogin"
android:onClick="instagramLogin"
/>
<ImageButton
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/twitter"
android:layout_below="@+id/instagramLogin"
android:id="@+id/twitterLogin"
android:onClick="twitterLogin"
/>
<ImageButton
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/reddit"
android:layout_below="@+id/twitterLogin"
android:id="@+id/redditLogin"
android:onClick="redditLogin"
/>
现在看起来像什么:
最佳答案
您需要获取相应的Layoutparams。
ViewGroup.LayoutParams reddit = instaLogin.getLayoutParams();
应该
ViewGroup.LayoutParams reddit = redditLogin.getLayoutParams();
与Twitter登录相同:
ViewGroup.LayoutParams twit = twitLogin.getLayoutParams();
您的工作是采用instagram layoutparams并将其应用到3个按钮上,以便将它们全部放置在另一个按钮之上,因此仅显示最后一个。可能只是您的复制+粘贴错误,但这应该可以解决。
如果不能解决问题,则问题应该出在布局文件中。尝试使用LinearLayout或为您的RelativeLayout设置正确的属性。
关于java - ImageButton的排列不正确,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28275402/