我有一个观点TableLayout, TableRow and TextView.我希望它看起来像一个网格.我需要得到这个网格的高度和宽度.这些方法getHeight()和getWidth()总是返回0.这发生在我和动态也格式化网格时我使用XML版本.
如何检索视图的尺寸?
这是我在Debug中用来检查结果的测试程序:
import android.app.Activity;
import android.os.Bundle;
import android.widget.TableLayout;
import android.widget.TextView;
public class appwig extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.maindemo); //<- includes the grid called "board"
int vh = 0;
int vw = 0;
//Test-1 used the xml layout (which is displayed on the screen):
TableLayout tl = (TableLayout) findViewById(R.id.board);
tl = (TableLayout) findViewById(R.id.board);
vh = tl.getHeight(); //<- getHeight returned 0, Why?
vw = tl.getWidth(); //<- …Run Code Online (Sandbox Code Playgroud) 我在4个按钮上添加了一些图标,它们在按钮旁边看起来很大.那么我该如何调整它们的大小呢?我在按钮上使用了drawableLeft来添加图标.
drawables被称为交易,奖杯,拼图和扩音器.图标太大了.content_main.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/content_main"
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"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="tr.k12.evrim.evrimnews.MainActivity"
tools:showIn="@layout/activity_main">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/frameLayout"
android:layout_alignParentTop="true"
android:layout_alignParentStart="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Giri? Yap"
android:onClick="SignIn"
android:textStyle="bold"
style="@style/Widget.AppCompat.Button.Colored"/>
</LinearLayout>
</FrameLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="400dp"
android:layout_below="@id/frameLayout"
android:orientation="vertical">
<Button
android:text="Duyurular"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_below="@+id/frameLayout"
android:layout_centerHorizontal="true"
android:layout_marginTop="13dp"
android:id="@+id/button2"
android:drawableLeft="@drawable/megaphone" />
<Button
android:text="Kadromuz"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_below="@+id/button2"
android:layout_alignEnd="@+id/button2"
android:layout_marginTop="13dp"
android:id="@+id/button3"
android:drawableLeft="@drawable/puzzle"/>
<Button
android:text="Ba?ar?lar?m?z"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_marginTop="12dp"
android:id="@+id/button5"
android:drawableLeft="@drawable/trophy"/>
<Button
android:text="Ortaklar?m?z"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_marginTop="12dp"
android:id="@+id/button4" …Run Code Online (Sandbox Code Playgroud) 最近发布的新的Facebook SDK for Android(v4.0)导致了我正在使用的自定义LoginButton的奇怪行为.下面是对不同SDK版本中相同XML的呈现方式的比较.
问题似乎是SDK 4.x中的FB图标无法正确拉伸以适合自定义大小的按钮,而在4.0.1时,android:layout_height属性将被完全忽略.
我的问题是如何让SDK 4.x中的按钮出现在SDK 3.x中?XML和Java解决方案都是完全可以接受的.
适用于SDK 3.x的XML:
<com.facebook.widget.LoginButton
android:background="@color/com_facebook_blue"
android:id="@+id/login_btn_facebook"
android:layout_width="225dp"
android:layout_height="50dp"
android:layout_marginBottom="5dp"
android:layout_marginTop="5dp"
android:layout_gravity="center"
android:onClick="onFacebookLoginClick"
/>
Run Code Online (Sandbox Code Playgroud)
它在SDK 3.x上的外观(在OnePlus One上截图,运行CM11S):

用于SDK 4.x的XML(按钮的包重命名为+我必须更改宽度和字体以匹配g +按钮):
<com.facebook.login.widget.LoginButton
android:background="@color/com_facebook_blue"
android:id="@+id/login_btn_facebook"
android:layout_width="221dp"
android:layout_height="50dp"
android:layout_marginBottom="5dp"
android:layout_marginTop="5dp"
android:layout_gravity="center"
android:textSize="7pt"
android:onClick="onFacebookLoginClick"
/>
Run Code Online (Sandbox Code Playgroud)
它在SDK 4.0上的外观(在Genymotion Nexus 5上运行的屏幕截图,运行未经修改的4.4.4):

它在SDK 4.0.1(相同的Genymotion Nexus 5)上的外观如何:

登录按钮已更新,可以正确测量其大小.
相关文章:
为了支持不同的屏幕尺寸,在登录按钮上方,我有一个ViewPagerIndicator和一个ViewPager,它配置为占用定位具有定义高度的元素后剩余的所有可用垂直空间.
我正在尝试android ScaleDrawable
但它似乎不起作用...我在文档示例中创建了xml,我在drawable文件夹中有一个logo.png
<?xml version="1.0" encoding="utf-8"?>
<scale xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/logo"
android:scaleGravity="center_vertical|center_horizontal"
android:scaleHeight="80%"
android:scaleWidth="80%" />
Run Code Online (Sandbox Code Playgroud)
我将这个logo2.xml保存在drawable文件夹中然后我有一个带有ImageView的LinearLayout并将ImageView的src设置为"@ drawable/logo2"但徽标没有出现......我在这里做错了吗?你如何实际使用scale元素?
在某些情况下,Android-Lint给了我这个暗示:
此标签及其子代可以替换为一个和复合drawable
我可以在某些地方这样做,但在其他地方,缩放图像很重要,我无法做到.有没有选项可以设置复合可绘制的大小?
目前我的drawable只是缩放到它的正常大小,我希望它适合我的按钮.这是现在的样子:

这是按钮的xml:
<LinearLayout android:layout_width="wrap_content"
android:id="@+id/linearLayout2" android:layout_height="40dp"
android:layout_weight="0.4" android:gravity="right|center_vertical"
android:paddingRight="5dp">
<Button android:id="@+id/button1" android:background="@drawable/refresh"
android:layout_height="25dp" android:layout_width="150dp"
android:text="@string/buttonSearchAgain" android:drawableRight="@drawable/refresh_48"></Button>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
所以我希望它看起来像这样:

有什么办法可以缩小我的画幅吗?
我正在尝试创建一个主入口接口.我将创建一个六个按钮,每个按钮将打开另一个活动.对于每个按钮,我希望它在按钮下方有一个带有文本的大图标.目前,我可以在按钮上有图像,但我不知道如何使文本显示在按钮下方.我试图将文本直接放在图像上,但看起来不太好.这是按钮第一行(两个按钮)的部分
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="horizontal"
android:weightSum="2" >
<Button
android:id="@+id/btn1"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:background="@drawable/ic_my_icon" />
<Button
android:id="@+id/btn2"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:background="@drawable/ic_my_icon2" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
这就是我所说的.除此之外,我希望图标是一个椭圆形按钮.我想要的结果看起来像这篇文章中的图像,除了我想要六个带图像和文字的椭圆形按钮. 有象的圆的按钮在中心和文本在象下
非常感谢您的帮助.
所以我有四个按钮,它们都使用match_parent来表示高度和宽度.我使用"drawableTop"属性在按钮本身内有图像,我想制作它,所以我不需要为每个分辨率单独的图像.这是我拍的肖像截图.景观将会有所改变.

所以这看起来很好,除了我只有4种不同的图像分辨率,并在我的手机上尝试它们没有产生积极的结果.有没有什么方法可以让我有一个更大的图像,比如只是"可绘制"并让它缩小以适应所有分辨率?如果没有,我该怎么办?我目前涵盖hdpi,ldpi,mdpi和xhdpi,但我想涵盖所有界限.还有哪些其他密度?
如果我可以实现自动调整大小,我也不必禁止用户使用Landscape:
另外,这是xml:
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:baselineAligned="false"
android:orientation="horizontal" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="vertical"
tools:ignore="NestedWeights" >
<Button
android:id="@+id/bMap"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:drawableTop="@drawable/ic_camera"
android:text="Button" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="vertical" >
<Button
android:id="@+id/bCamera"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:drawableTop="@drawable/ic_camera"
android:text="Button" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:baselineAligned="false"
android:orientation="horizontal" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="vertical"
tools:ignore="NestedWeights" >
<Button
android:id="@+id/bGallery"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:drawableTop="@drawable/ic_camera"
android:text="Button" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="vertical" >
<Button
android:id="@+id/bPlants"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:drawableTop="@drawable/ic_camera"
android:text="Button" />
</LinearLayout>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
我想创建一个Button这样的:
这是我的代码:
<Button
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_gravity="center"
android:drawablePadding="10dp"
android:id="@+id/button"
android:text="Play Game"
android:background="@drawable/ronaldo"
android:drawableRight="@drawable/messi" />
Run Code Online (Sandbox Code Playgroud)
但是messi.jpeg太大了,并没有在这种情况下显示文字.如何减小图像大小以适应按钮?
愿任何人帮我解决这个问题吗?
android android-image android-layout android-button android-drawable
我有一个带文字的按钮和左边的抽屉.有没有什么方法可以在保持纵横比的同时将可绘制比例调整到合适的尺寸(填充按钮的高度)?
我的布局相关摘录:
<Button
android:text="@string/add_fav"
android:id="@+id/event_fav_button"
android:layout_width="match_parent"
android:layout_height="40dp"
android:drawableLeft="@drawable/star_yellow"/>
Run Code Online (Sandbox Code Playgroud) 我有一个既有文本又有图像的按钮。它所取的图像尺寸作为图像的实际尺寸。如何更改按钮中图像的大小?
<Button
android:id="@+id/button3"
android:layout_weight="1"
android:layout_height="match_parent"
android:layout_width="wrap_content"
android:drawableTop="@drawable/home_icon"
android:text="Settings"
/>
Run Code Online (Sandbox Code Playgroud) 使用ScaleDrawable进行缩放对我来说不起作用.
可拉图保持相同的尺寸.
LayerDrawable layerDrawable = new LayerDrawable(layers);
Drawable d = layerDrawable.getCurrent();
ScaleDrawable sd = new ScaleDrawable(d, 0, 0.01f, 0.01f);
return sd.getDrawable();
Run Code Online (Sandbox Code Playgroud)
我需要做些什么来解决它?
谢谢.